【发布时间】:2011-01-28 03:21:38
【问题描述】:
我想让 scrapy 抓取下一个链接如下所示的页面:
<a href="#" onclick="return gotoPage('2');"> Next </a>
scrapy 是否能够解释其中的 javascript 代码?
通过 livehttpheaders 扩展,我发现单击 Next 会生成一个 POST,其中包含一个非常大的“垃圾”,如下所示:
encoded_session_hidden_map=H4sIAAAAAAAAALWZXWwj1RXHJ9n
我正在尝试在 CrawlSpider 类上构建我的蜘蛛,但我真的不知道如何对其进行编码,使用 BaseSpider 我使用 parse() 方法来处理第一个 URL,这恰好发生在是一个登录表单,我在其中做了一个 POST:
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() 来告诉下一步该做什么。我不知道如何告诉 CrawlSpider 在第一个 URL 上使用哪种方法?
我爬取的所有请求,除了第一个,都是 POST 请求。它们交替使用两种类型的请求:粘贴一些数据,然后单击“下一步”进入下一页。
【问题讨论】:
-
给我更多的上下文,scrapy 无法解释 javascript,但如果你能找到(encoded_session_hidden_map)作为隐藏的表单字段或其他东西,你可以模仿 javascript 发送的 POST 消息.
标签: javascript python onclick scrapy web-scraping