Scrapy:下一个按钮使用javascript

时间:2013-09-15 09:27:42

标签: python selenium-webdriver web-scraping scrapy

我正试图从这个网站上搜集http://saintbarnabas.hodesiq.com/joblist.asp?user_id= 我希望得到所有的RN ...我可以抓取数据,但无法继续下一页 因为它的JavaScript。我尝试阅读其他问题,但我没有得到它。这是我的代码

class MySpider(CrawlSpider):
    name = "commu"
    allowed_domains = ["saintbarnabas.hodesiq.com"]
    start_urls = ["http://saintbarnabas.hodesiq.com/joblist.asp?user_id=",
    ]
    rules = (Rule (SgmlLinkExtractor(allow=('\d+'),restrict_xpaths=('*'))
    , callback="parse_items", follow= True),
    )

下一个按钮显示为

<a href="Javascript: Move('next')">Next</a>

这个分页让我痛苦......

1 个答案:

答案 0 :(得分:4)

简而言之,您需要确定Move('next')的作用并在代码中重现该内容。

对网站的快速检查表明功能代码是:

function Move(strIndicator)
{
    document.frm.move_indicator.value = strIndicator;
    document.frm.submit();
}

document.frm是名称为“frm”的表单:

<form name="frm" action="joblist.asp" method="post">

因此,基本上您需要构建一个请求,以POSTmove_indicator的值'next'为该表单执行FormRequest。这可以通过使用return FormRequest.from_response(response, formname="frm", formdata={'move_indicator': 'next'}) 类(see the docs)轻松完成,例如:

{{1}}

这种技术在大多数情况下都有效。困难的部分是弄清楚javascript代码是什么,有时它可能会被混淆并执行过于复杂的东西,以避免被刮掉。