使用scrapy获得使用Javascript的第二页结果
我正在尝试抓取,你可以看到,如果你点击第二个页面,页面的URL不会改变,它是通过javascript处理的。我一直在尝试使用inspect元素中的network选项卡,但我完全迷路了。我设法抓取了网站的第一页,下面是代码使用scrapy获得使用Javascript的第二页结果,javascript,jquery,python,scrapy,Javascript,Jquery,Python,Scrapy,我正在尝试抓取,你可以看到,如果你点击第二个页面,页面的URL不会改变,它是通过javascript处理的。我一直在尝试使用inspect元素中的network选项卡,但我完全迷路了。我设法抓取了网站的第一页,下面是代码 from scrapy.spider import BaseSpider from scrapy.selector import HtmlXPathSelector from scrapy_demo.items import ScrapyDemoItem class MyS
from scrapy.spider import BaseSpider
from scrapy.selector import HtmlXPathSelector
from scrapy_demo.items import ScrapyDemoItem
class MySpider(BaseSpider):
name = "test"
allowed_domains = ["sueryder.org"]
start_urls = ["http://www.sueryder.org/Get-involved/Volunteering/All-Roles"]
def parse(self, response):
hxs = HtmlXPathSelector(response)
titles = hxs.select('//tr')
items = []
for titles in titles:
item = ScrapyDemoItem()
item ["link"] = titles.select('td/text()').extract()
items.append(item)
return items
JavaScript只是提交一个表单,所以请使用FormRequest:
您还必须为爬行蜘蛛创建子类,并设置一个规则来爬行结果页面,因为在解析中执行此操作将不起作用。感谢您的回复,是的,我已经查看了,因此我检查了元素Thank You Blender-我将在今天晚些时候查看此内容。似乎让senseOk为这个noob问题感到抱歉,第一次使用类爬行器。我是否将href放在规则内的restrict\u xpath中的hxs.select中?我还需要一个allow吗?@user2927435:CrawlSpider有一个rules类属性,允许您创建简单的规则来跟踪链接,并将已爬网的页面传递给回调。您希望创建一个规则,该规则遵循给定结果页面中的所有链接,并将已爬网的页面传递给类似parse_result的回调。
from scrapy.http import FormRequest
for href in hxs.select('//div[@class="paging pag-num pag-arrows"]//a/@href'):
target = href.split("'")[1]
yield FormRequest.from_response(
response=response,
formnumber=0,
formdata={'__EVENTTARGET': target}
)