我正在尝试从这个网站上抓取 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>
这个分页简直要了我的命...
最佳答案
简而言之,您需要弄清楚 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">
因此,基本上您需要构建一个请求,以使用 'next'
的 move_indicator
值为该表单执行 POST
。这可以通过使用 FormRequest
类 ( see the docs ) 轻松完成,例如:
return FormRequest.from_response(response, formname="frm",
formdata={'move_indicator': 'next'})
此技术在大多数情况下都有效。困难的部分是弄清楚 javascript 代码的作用,有时它可能会被混淆并执行过于复杂的东西以避免被抓取。
关于python - Scrapy:下一个按钮使用 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18810850/