Scrapy初学者在这里。我试图从多个页面刮取数据。每个页面包含20个条目,然后单击下一个按钮转到下一页。但是,URL不会更改,因为标记为:
<a href="#" onClick="nextPage(2);"> Click me! </a>
此页面是唯一的,因为它不像我找到的许多其他示例那样使用XHR请求。其他一些答案建议通过Chrome / Firefox开发工具监控GET请求,然后复制它们。该站点不会产生XHR请求,而是产生一系列javascript请求(一个AJAX)。
我想使用scrapy转移到下一页(如果可能的话,最好不要使用硒),这样我就可以继续查看已查看的数据了。
这是供参考的网页:http://www.australianschoolsdirectory.com.au/search-result.php
第一次问问。提前谢谢!
答案 0 :(得分:1)
要获得下一页,您需要制作一个&#39; POST&#39;请求并将form-data
与pageNum
一起作为关键字和页码作为值传递。此代码首先显示5页并在浏览器中显示响应:
>>> from scrapy.http import FormRequest
>>> url = 'http://www.australianschoolsdirectory.com.au/search-result.php'
>>> for i in range(1, 6):
... payload={'pageNum': str(i)}
... r = FormRequest(url, formdata=payload)
... fetch(r)
... view(response)
...
2017-05-20 21:52:22 [scrapy.core.engine] DEBUG: Crawled (200) <POST http://www.australianschoolsdirectory.com.au/search-result.php> (r
eferer: None)
True
2017-05-20 21:52:25 [scrapy.core.engine] DEBUG: Crawled (200) <POST http://www.australianschoolsdirectory.com.au/search-result.php> (r
eferer: None)
True
2017-05-20 21:52:28 [scrapy.core.engine] DEBUG: Crawled (200) <POST http://www.australianschoolsdirectory.com.au/search-result.php> (r
eferer: None)
如果您需要所有页面,只需更改6到488。