如何使用Scrapy从onclick事件获取链接?

时间:2016-02-21 00:54:38

标签: javascript python html scrapy

我一直在使用Scrapy来获取内容,但我在从这个特定网站获取链接时遇到了一些问题:Taleo Site

单击标题会转到作业说明。但是href被设置为#'。

onclick事件是:

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]

我该如何解决这个问题?感谢

2 个答案:

答案 0 :(得分:0)

当您点击职位时,浏览器会发送POST个请求,而不是GET。这就是链接相同的原因,只有POST请求参数与每个作业列表不同。

当您检查网络控制台时,您可以在此链接POST上看到正在发送的https://cantire.taleo.net/careersection/2/jobdetail.ftl个请求formdata(键值对)。您可以使用POST模块发送包含所有参数的Request请求,该模块将带您进入职位描述页面。

POST请求将类似于:

yield scrapy.Request(url="https://cantire.taleo.net/careersection/2/jobdetail.ftl", method="POST", formdata={'key':'value'}, callback=self.parse)

答案 1 :(得分:-1)

我强烈建议您使用Selenium + Scrapy。通过这种方式,您可以轻松处理点击和呈现动态内容的问题。 Helpful links here.