目录
1. Scrapy基本结构
- Scrapy工作流程
- Scrapy框架构成
2. Scrapy框架使用技巧
-
logging日志模块
-
scrapy.Request()应用
-
Scrapy CrawlSpider引入
课堂笔记
1. Scrapy基本结构
1.1 Scrapy工作流程
-
Scrapy框架,是为了更方便快捷提取数据而编写的应用框架,只需要自己编写少量代码就可以数据爬取。Scrapy采用Twisted异步网络框架,提升了爬取速度。
-
Scrapy基本工作流程
1.2 Scrapy框架构成
-
框架基本构成
- 引擎(Scrapy engine):负责Scrapy中各模块间数据与信号的交互,已经实现。
- 调度器(Scheduler):一个队列,用于存放引擎发送的requests请求,以经实现。
- 下载器(Downloader):对requests请求进行下载,并返回给引擎,已经实现。
- 爬虫(Spiders):处理引擎发送的response,并提取url和数据,需要实现。
- 管道(Item Pipeline):接收和处理Spiders传递的数据,需要实现。
- Pipeline由于实现功能不同,可以存在多个。
- Pipeline的权重越小优先级越高。
- Pipeline中process_item方法名不能修改为其他的名称。
- 下载中间件(Downloader Middlewares):可以自定义的下载扩展,比如设置代理,一般无需自己实现。
- 爬虫中间件(Spider Middlewares):可以自定义requests请求和进行response过滤,一般无需自己实现。
-
小试牛刀
# 创建一个scrapy项目 scrapy startproject projectName # 生成一个spider scrapy genspider spiderName 'xxx.com' # 实现spider,使用xpath等方法提取数据 # 获取spider中数据,在pipeline中进行处理 # 命令行执行爬虫 scrapy crawl projectName # Pycharm中运行爬虫 from scrapy import cmdline cmdline.execute('scrapy crawl projectName'.split()) # cmdline.execute(['scrapy', 'crawl', 'projectName'])
2. Scrapy框架使用技巧
2.1 logging日志模块
-
logging模块,主要解决爬虫运行中可能会出现某一些请求数据错误的情况而导致获取数据失败,主动将错误信息保存到指定的文档中,便于详情查看,更清晰的获得错误信息。
-
直接使用logging模块
在每一个部分都进行logging记录
- 在setting.py中指定日志文档 LOG_FILE = ‘./log.log’
- pipeline.py文档
import scrapy, logging from scrapy.http.response.html import HtmlResponse from scrapy.selector.unified import SelectorList class BdimgSpider(scrapy.Spider): name = 'bdImg' allowed_domains = ['image.baidu.com'] start_urls = ['http://image.baidu.com/'] # 根据指定的名称创建logger logger = logging.getLogger(__name__) def parse(self