返回介绍

12.8 翻页功能

发布于 2024-01-26 22:39:51 字数 1046 浏览 0 评论 0 收藏 0

以上实现了当前网页数据的抽取,但是我们要抽取博客所有页面的文章,这就需要实现翻页功能。翻页功能的实现,本质上是构造Request并提交给Scrapy引擎的过程。

首先抽取下一页的链接,我们使用Selector中的re()方法进行抽取,正则表达式为

  <a href="(\S*)">下一页</a>

构造请求使用scrapy.Request对象。parse()方法代码如下:

  def parse(self, response):
     # 实现网页的解析
     # 首先抽取所有的文章
     papers = response.xpath(".// *[@class='day']")
     # 从每篇文章中抽取数据
     for paper in papers:
       url = paper.xpath(".// *[@class='postTitle']/a/@href").extract()[0]
       title = paper.xpath(".// *[@class='postTitle']/a/text()").extract()[0]
       time = paper.xpath(".// *[@class='dayTitle']/a/text()").extract()[0]
       content = paper.xpath(".// *[@class='postTitle']/a/text()").extract()[0]
       item = CnblogspiderItem(url=url,title=title,time=time,content=content)
       yield item
      next_page = Selector(response).re(u'<a href="(\S*)">下一页</a>')
      if next_page:
       yield scrapy.Request(url=next_page[0],callback=self.parse)

Request对象的构造方法中URL为请求链接,callback为回调方法,回调方法用来指定由谁来解析此项Request请求的响应。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文