Scrapy爬取知名网站的图书信息

本文用 Scrapy 爬虫框架爬取专门供爬虫初学者训练用的网站:http://books.toscrape.com/

打开虚拟环境,创建项目文件

打开控制台,输入workon py3scrapy

这里写图片描述

进入虚拟环境所在盘(我的是E盘)

这里写图片描述

创建项目文件,输入scrapy startproject demo(创建的项目文件叫demo)

这里写图片描述
在E盘可以找到所创建的文件夹。
这里写图片描述

查看项目目录下的文件,输入tree/F demo

这里写图片描述
好,到此项目文件就创建成功了。

打开所爬取网站,分析所爬取的内容。

可以看出,每一本书的信息包裹在<article class="product_pod">元素内
这里写图片描述
书名信息在其下的 **h3** > a元素的 **title** 属性中
这里写图片描述
书价信息在其下<p class="price_color">£51.77</p>的文本中。
这里写图片描述
由于这个网页有50页,下一页的URL在 ul.pager>li.next>a元素的href属性中
如:<li class="next"><a href="catalogue/page-2.html">next</a></li>
这里写图片描述

编写代码,实现爬虫

spider目录下,创建一个book_spider.py文件。
这里写图片描述
运行无错误。
代码如下:

# -*- coding:utf-8 -*-
import scrapy
class BooksSpider(scrapy.Spider):
    #爬虫唯一标识
    name = "books"
    #爬取的起始点
    start_urls = ['http://books.toscrape.com/']

    def parse(self, response):
        #提取信息
        for book in response.css('article.produce_pod'):
            #书名信息
            name = book.xpath('./h3/a/@title').extract_first()
            #书价信息
            price = book.css('p.price_color::text').extract_first()

            yield{
                'name':name,
                'price':price,
            }
        #提取链接
        next_url = response.css('ul.pager li.next a::attr(href)').extract_first()
        if next_url:
            #如果找到下一位URL,得到绝对路径,构造新的Request对象
            next_url = response.urljoin(next_url)
            yield scrapy.Request(next_url, callback = self.parse)

运行代码,抓取数据

在控制台输入scrapy crawl books -o books.csv回车
这里写图片描述
等程序运行完,在demo文件夹里可以找到:
这里写图片描述
好,抓取完毕。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值