Scrapy教程 - (3)如何翻頁爬取更多資料

前言

上个教程2完成了一个单页的简单爬虫,但是在实际应用上,我们不会只需要单页的数据,而是多页的数据。因此在爬取多页面数据前,我们要先观察网站/网页的页面变化,才能知道如何有效地获取下一页。

觀察頁面

首先,看一下首页网址:

// 首頁網址
https://books.toscrape.com/catalogue/page-1.html

然后看一下第一页尾,可以发现总共有50页,而且点击右下next可以到下一页。
在这里插入图片描述
接着继续观察第二页,

// 第二頁網址
https://books.toscrape.com/catalogue/page-2.html

一样有next可以往下一页,另外还有previous可以回前一页
在这里插入图片描述
这里我们做一个小结就是,每一页在转换的时候,网址是随着页数在改变的

// 第1頁
...page-1.html
// 第2頁
...page-2.html
// 以此類推,第50頁
...page-50.html

如何翻頁

记得教程2的parse function吗? 我们要在这个function里面加上解析下一页按钮的链接,如有,我们就让爬虫继续执行;如没有,则停止爬取

def parse(self, response):
	// page_num = 1
	// 找所有書籍的url
	books = response.xpath('//h3/a/@href').extract()
    for book in books:
    	// 將網址前綴與後綴結合
    	url = response.urljoin(book)
        yield response.follow(url = url,
                              callback = self.parse_book)
   // extract 下一頁 url,並發出請求
   next_page_url = response.xpath('//a[text()="next"]/@href').extract_first()
   absolute_next_page_url = response.urljoin(next_page_url)
   yield Request(absolute_next_page_url)
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值