如何使用scrapy中的爬行器单击带有javascript onclick的链接?
我希望scrapy能够抓取下一个链接如下所示的页面:如何使用scrapy中的爬行器单击带有javascript onclick的链接?,javascript,python,onclick,scrapy,web-scraping,Javascript,Python,Onclick,Scrapy,Web Scraping,我希望scrapy能够抓取下一个链接如下所示的页面: <a href="#" onclick="return gotoPage('2');"> Next </a> encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n 我试图在CrawlSpider类上构建我的爬行器,但我真的不知道如何对其进行编码,使用BaseSpider我使用parse()方法处理第一个URL,它恰好是一个登录表单,我在其中发布了以下内容: d
<a href="#" onclick="return gotoPage('2');"> Next </a>
encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n
我试图在CrawlSpider
类上构建我的爬行器,但我真的不知道如何对其进行编码,使用BaseSpider
我使用parse()
方法处理第一个URL,它恰好是一个登录表单,我在其中发布了以下内容:
def logon(self, response):
login_form_data={ 'email': 'user@example.com', 'password': 'mypass22', 'action': 'sign-in' }
return [FormRequest.from_response(response, formnumber=0, formdata=login_form_data, callback=self.submit_next)]
然后我定义了submit_next()来告诉下一步要做什么。我不知道如何告诉爬行蜘蛛在第一个URL上使用哪种方法
我爬网中的所有请求,除了第一个,都是POST请求。它们交替使用两种类型的请求:粘贴一些数据,然后单击“下一步”转到下一页。实际方法如下:
- 您可以尝试在
中使用FormRequest.from\u response
dont\u click=true
- 或者您可能希望处理来自服务器的重定向(302)(在这种情况下,您必须在meta中提到,您需要将句柄重定向请求也发送到回调。)
使用像fiddler这样的web调试器,或者您可以使用Firefox插件FireBug,或者只需在IE 9中点击F12;并检查用户在网站上实际发出的请求是否与您抓取网页的方式相匹配。我构建了一个快速抓取程序,通过selenium执行JS。请随意复制/修改再给我一些上下文,scrapy无法解释javascript,但如果您可以将javascript发送的POST消息(编码的会话隐藏的映射)作为一些隐藏的表单字段或其他内容,您可以模拟该消息。