最简单的Scrapy爬虫程序:
import scrapy
class Books(scrapy.Spider):
name = 'books' #建立唯一爬虫名,调用CMD命令时会用到
start_urls = ['http://books.toscrape.com/'] #爬取开始地址
def parse(self, response): #默认解析函数
infos = response.xpath('//article') #直接使用response.xpath来解析信息
for info in infos:
title = info.xpath("h3/a/@title").extract() #最终提取信息时,加上.extract()
price = info.xpath('div/p[@class="price_color"]/text()').extract()
yield {'title':title,'price':price} #生成器返回数据信息
运行命令:scrapy crawl books -o books.csv
结果截图:
当然,如果要爬取下一页的页面,共计50页,可以在parse()函数下添加以下代码,然后运行上述代码即可获取每页20条,共计1000条的图书标题以及价格信息:
def parse(self, response):
...
next_url = response.xpath('//li[@class="next"]/a/@href').extract()[0]
if next_url:
next_url = response.urljoin(next_url)
yield Request(next_url,callback=self.parse)