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函数(怎么提取数据)