head first Scrapy

3 Scrapy 爬取 (3) 循环多个页面

2017-11-10  本文已影响62人  法号无涯

从网页上获取下一页按钮的链接,并与网站根url相连得出绝对路径

In [24]: next_page_url = response.xpath('//*[@class="next"]/a/@href').extract_first()

In [25]: next_page_url
Out[25]: u'/page/2/'

In [26]: response.urljoin(next_page_url)
Out[26]: u'http://quotes.toscrape.com/page/2/'

对应的在spider的parse 函数末尾加上这些命令

        next_page_url = response.xpath('//*[@class="next"]/a/@href').extract_first()
        absolute_next_page_url = response.urljoin(next_page_url)
        yield scrapy.Request(absolute_next_page_url)

程序中我们只是把获取到的数据存入变量text、author、tags 中,并没有把他们存储起来。为了以特定格式存储,还需要用yield语句。将原先的print语句改成yield后可以通过命令
scrapy crawl quotes -o item.csv将多个items写入item.csv 文件中。

需要恶补内容

这里使用了yield语句和scrapy.Request(url)
并不知道yield语句是个什么,那个request最后又是怎么被处理的,怎么会又调回到那个 parse函数

上一篇下一篇

猜你喜欢

热点阅读