Scrapy爬取toscrape.com书籍名称,价格

项目名称:mybooks

项目URL:books.toscrape.com

项目需求:

  1.书籍名称

  2.价格

  3.保存在Excel表格中

第一步:在shell中创建scrapy项目

scrapy startproject mybooks

第二步:创建spider文件

  进入刚刚创建的项目目录,mybooks/mybooks/,在这里创建一个spider.py(文件名随意)

第三部:编写spider

  打开spider.py

# -*- coding: utf-8 -*-
import scrapy

class MybooksSpider(scrapy.Spider):
    name = 'mybooks'
    start_urls = ['http://books.toscrape.com/']

    def parse(self, response):
        #提取一页的数据
        books_name = response.xpath('//img/@alt').extract()
        books_price = response.xpath('//p[@class="price_color"]/text()').extract()
        for i, j in zip(books_name, books_price):
            #美元价格兑换成人民币
            j = float(j[1:]) * 6.6866
            #人民币价格保留两位小数
            j = round(j, 2)
            yield {
                'name': i,
                'price': j,
            }

        #提取下一页的URL
        next_url = response.xpath('//li[@class="next"]/a/@href').extract_first()
        if next_url:
            #用什么方法不是重点,重点在于构造完整的URL
            next_url = response.urljoin(next_url)
            yield scrapy.Request(next_url, callback = self.parse) #scrapy下一个目标URL,下载完这个新的目标URL之后,调用parse函数,也就是刚刚编写的那个parse()

  注意:①,编写的spider对象,必须继承scrapy.Spider

     ②,必须要有name,name是spider的名字,必须要有

     ③,必须要有start_urls,这是scrapy第一个下载的网页,告诉scrapy抓取工作从这里开始。

     ④,parse函数是scrapy默认调用的,自己在这里实现抓取逻辑

第四步:在shell中启动这个spider

scrapy crawl mybooks -o mybooks.csv

  crawl表示启动爬虫

  mybooks是刚刚在spider.py中MyboosSpider定义的name

  -o 表示保存文件的路径,没有这个参数也能启动爬虫,只不过数据没有保存下来而已。

  myboos.csv是文件名

总结:

  对于一项很简单的爬虫工作,如果利用scrapy,只需要2个步骤,项目目录内的其他文件都不需要更改:

    第一是创建项目。

    第二是编写一个爬虫文件。然后启动爬虫就可以了(抓取下来的数据可以像上面的第四步一样,轻松保存)

      爬虫文件只需要编写3点:

        name

        start_urls

        parse函数(怎么提取数据)

posted @ 2018-07-17 03:03  Alfredfly  阅读(746)  评论(0编辑  收藏  举报