如何使用 Scrapy 从点击事件获取链接
How to get link from onclick event using Scrapy?
我一直在使用Scrapy来获取内容,但是我在从这个特定网站获取链接时遇到了一些问题:Taleo 网站
单击标题将转到职位描述。但是 href 设置为"#"。
点击事件是:
onclick="javascript:setEvent(event);requisition_openRequisitionDescription('requisitionListInterface','actOpenRequisitionDescription',_ftl_api.lstVal('requisitionListInterface', 'requisitionListInterface.listRequisition', 'requisitionListInterface.ID1380', this),_ftl_api.intVal('requisitionListInterface', 'requisitionListInterface.ID1384', this));return ftlUtil_followLink(this);
此外,所有作业描述的链接对于所有作业都是相同的。所有描述链接都是:
https://cantire.taleo.net/careersection/2/jobdetail.ftl
我已经使用 scrapy 一段时间了,想点击链接并抓取内容。我只是在这种设置中遇到了问题,其中 href 属性是"#"并且链接是由 JavaScript 创建的。
过去,我会执行以下操作来获取链接并关注它们,但在这种情况下,这不起作用。
item['link'] = sel.xpath('@href').extract()[0]
我该如何解决这个问题?谢谢
当您单击职位标题时,浏览器会发送POST
请求而不是GET
。这就是为什么链接相同,只是每个作业列表POST
请求参数不同。
当您检查网络控制台时,您可以看到在此链接上发送了一个POST
请求,https://cantire.taleo.net/careersection/2/jobdetail.ftl
具有各种formdata
(键值对)。您可以使用Request
模块发送包含所有参数的POST
请求,该模块将带您进入职位描述页面。
POST
请求将如下所示:
yield scrapy.Request(url="https://cantire.taleo.net/careersection/2/jobdetail.ftl", method="POST", formdata={'key':'value'}, callback=self.parse)
我强烈建议为此使用Selenium + Scrapy。通过这种方式,您可以轻松处理点击和呈现动态内容的问题。有用的链接在这里。
相关文章:
- 日期选取器单击事件获取日期
- 谷歌地图事件-获取点击元素的父级
- 使用事件获取 CKEDITOR ID 和值
- 数据表 - 通过单击事件获取当前行的数据库 ID
- 如何使用 Scrapy 从点击事件获取链接
- 在 JavaScript 中从一次点击事件到其他事件获取价值
- 如何从 MSPointerMove 事件获取指针的当前位置
- 从 IE9 拖放事件获取文件位置
- 从 jquery 事件获取自定义数据
- Jqgrid 使用 afterSubmit 事件获取新添加记录的 ID
- 使用onsubmit事件获取查询字符串
- 从单击事件获取值
- 主干自定义事件:获取调用者对象
- Javascript本地文件保存或onSave事件获取保存的文件名
- 通过body上的mousmove事件获取鼠标所在的元素
- Mixpanel -根据跟踪的事件获取用户(distinct_id或其他属性)
- 使用onchange事件获取选择颜色列表的值,以便更改图片
- 如何从一个按钮单击事件获取值到另一个按钮单击事件
- 使用javascript输入事件获取键代码
- 如何通过原型点击事件获取文本区域的文本