创建爬虫项目,名称:example。在命令行输入以下命令:
scrapy startproject example
创建一个爬虫,名称:books。在命令行输入以下命令:
scrapy crawl genspider book_spider books "books.toscrape.com/"
创建好的爬虫,目录结构如下:
编写爬虫文件 book_spider.py
# _*_ coding:utf-8 _*_
import scrapy
#注意是scrapy.Spider不是scrapy.spider
#用 scrapy crawl <SPIDER_NAME> -o books.csv 命令运行该爬虫
class BookSpider(scrapy.Spider):
# 每个爬虫的唯一标志
name = "books"
# 定义爬虫爬取的起始点,起始点可以是多个,这里只有一个
start_urls = ['http://books.toscrape.com/']
def parse(self, response):
# 提取数据
# 每一本书的信息在 <article class="product_pod">中
# css()方法找到所有这样的article元素,并以此迭代
for book in response.css('article.product_pod'):
# 书名信息在 article>h3>a元素的title属性里
# 例如: <a title='A Light'>A Light</a>
name = book.xpath('./h3/a/@title').extract_first()
# 书价信息在 <p class="price_color">的TEXT中
# 例如:<p class="price_color">51.77</p>
price = book.css('p.price_color::text').extract_first()
yield {
'name': name,
'price': price
}
# 提取链接
# 下一页的url在ul.pager>li.next>a里面
# 例如:<a href="catalogue/page-2.html">next</a>
next_url = response.css('ul.pager li.next a::attr(href)').