scrapy框架组成及各部分作用
item pipelines:
用于存放需要存储数据的数据模型,一般格式为:
#需要存储多少中类型的数据就写多少行,一般是key_value组合
'数据名称,即·key' = scrapy.Field()
spiders
用于解析返回来的response
import scrapy
from 项目名称.items import QSBKItem
#QSBKItem 在items.py中的一个类,装有数据模型
......
item = QSBKItem('字典中对应的key'='items.py中对应的模型名称')
#返回item,item是一个字典的形式,将item返回给了engine
yield item
engine
爬虫引擎,作为各个模块的中转站
pipelines
用于存储和过滤由spider爬取回来的数据,比如可以将数据存入数据库中等等
#这个函数是一定需要的,用于接收返回过来的item数据,并且执行保存和过滤数据的操作
def process_item(self,item,spider):......
#可有可无,在打开爬虫时运行的函数,一般是在需要爬虫在打开时执行某些操作时才需要该函数
def open_spider(self,spider):......
#可有可无,在关闭爬虫时运行的函数,一般是在需要爬虫在关闭时执行某些操作时才需要该函数
def close_spider(self,spider):......
Download
用于执行spider发出的网页请求,并且从网页中进行下载
scheduler
用于调度,如调度多url的请求,重复url的处理等
爬取多页数据
self.p += 1
if self.p <= 10:next_url = 'https://edu.csdn.net/courses/o280/p'+str(self.p)url = response.urljoin(next_url)#创建绝对url地址#再次调用parse函数来进行解析next_urlyield scrapy.Request(url = url,callback = self.parse)
连接数据库的配置文件书写
ITEM_PIPELINES = {#后面的数字越小执行的顺序越靠前,是自动生成的educsdn.pipelines.Edu .... = 300,educsdn.mysqlines.Edu .... = 301
}MYSQL_HOST='localhost'MYSQL_DATABASE = '数据库的名称'MYSQL_USER = '用户名'MYSQL_PASS = '密码'MYSQL_PORT = '端口'#一般为3306