4

我正在尝试从该网站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>

这个分页杀了我...

4

1 回答 1

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">

因此,基本上您需要构建一个请求来执行该POST表单,其move_indicator值为'next'. 这很容易通过使用FormRequest类(参见文档)来完成,例如:

return FormRequest.from_response(response, formname="frm", 
                                 formdata={'move_indicator': 'next'})

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

于 2013-09-15T17:04:40.273 回答