前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Scrapy1.6 爬虫框架3 分页处理

Scrapy1.6 爬虫框架3 分页处理

作者头像
mafeifan
发布2019-06-11 17:03:56
9820
发布2019-06-11 17:03:56
举报
文章被收录于专栏:finleyMafinleyMa

今天我们来爬取专供初学者练习爬虫的网站 http://books.toscrape.com/ 这是一个图书网站,默认有50页,每页会展示20本书,我们要一次性把所有图书的标题和价格全部抓取下来。

image.png

过程其实非常简单

  1. 新建项目 scrapy startproject book
  2. cd book; tree # 查看下项目结构
  3. spiders 目录下新建文件 book_spider.py
  4. 分析 html 结构,先通过chrome的开发者工具的审查元素功能 结合命令行 scrapy shell "http://books.toscrape.com/"

更新 book_spider.py 为如下,内容非常简单

代码语言:javascript
复制
import scrapy


class BooksSpider(scrapy.Spider):
    name = "books"
    start_urls = [
        'http://books.toscrape.com/',
    ]

    def parse(self, response):
        for book in response.css('article.product_pod'):
            # 选择器可以通过命令行工具就行调试
            yield {
                # xpath 语法 @ATTR 为选中为名ATTR的属性节点
                'name': book.xpath('h3/a/@title').get(),
                'price': book.css('p.price_color::text').get(),
            }
  1. 测试输出结果 scrapy crawl books -o book.jl

jl 是 json line格式

  1. 为了完整抓取,来处理分页
代码语言:javascript
复制
class BooksSpider(scrapy.Spider):
    # 爬取命令 scrapy crawl books
    name = "books"

    start_urls = [
        'http://books.toscrape.com/',
    ]

    def parse(self, response):
        for book in response.css('article.product_pod'):
            yield {
                'name': book.xpath('h3/a/@title').get(),
                'price': book.css('p.price_color::text').get(),
            }

        # 检查分页
        # 提取下一页的链接
        next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
        if next_url:
            next_url = response.urljoin(next_url)
            # 构造新的 Request 对象
            yield scrapy.Request(next_url, callback=self.parse)

解释 urljoin 是 response 对象提供的方法,传入相对地址生成绝对地址,然后再生成新的Request对象 Scrapy 本身不难,重点还是Python的基础

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.06.05 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档