上篇(https://blog.csdn.net/Jeeson_Z/article/details/82591625)介绍了Scrapy的原理流程和结构,现在就来通过案例介绍编写流程,项目选用我们的老朋友:豆瓣电影Top250
创建spider
命令创建:scrapy genspider douban https://www.douban.com (douban是自己命名的爬虫, 后面是允许爬取的域名,这里我们爬取豆瓣,则允许它在整个豆瓣爬取)
创建之后会发现爬虫项目下的spider目录下自动生成了刚刚创建的douban.py文件
打开后可以看到已经自动生成了很多代码,这就是命令创建的好处:自动生成
除了命令创建,也可以手动在spider目录下创建douban.py文件,但这样得到的是空文件,需要自己编写上面的信息
编写items.py
创建完爬虫后,我们要先定义一下要提取的数据格式,在items.py里面定义
打开items.py后,我们发现里面也有自动生成的代码,其中有个FirstscrapyItem类,就在这里面编写需要的数据,编写方式就如同它提示的,使用scrapy.Field()方法,此外把 pass 注释掉
items.py
# -*- coding: utf-8 -*- # Define here the models for your scraped items # # See documentation in: # https://doc.scrapy.org/en/latest/topics/items.html import scrapy class FirstscrapyItem(scrapy.Item): # define the fields for your item here like: # name = scrapy.Field() # pass img = scrapy.Field() name = scrapy.Field() intro = scrapy.Field() score = scrapy.Field() fans_num = scrapy.Field() quote = scrapy.Field()
编写spider
编写完items.py后,我们就可以写爬虫来提取出所需数据了
打开douban.py,这里面包含一个DoubanSpider类,他必须继承 scrapy.Spider,这样才可以实现自动流程
name:爬虫的名字,运行的时候指定该名字
allowed_domains:允许爬取的域名
strat_urls:第一个要爬取的页面的url,注意,填完url之后它自动生成了一个Request进行下载,结果Response自动传给下面的parse()
parse():编写解析页面的方法,response参数自动接受下载得到的Response<