-
什么是爬虫框架?
- 就是具有很强通用性且集成了很多功能的爬虫项目模板
-
Scrapy集成好的功能:
- 高性能的数据解析操作(xpath)
- 高性能的数据下载功能(异步)
- 高性能的数据持久化存储(管道) **
- 中间件机制(拦截请求和响应)
- 全站数据爬取操作
- 将一个网站所有页面的数据进行爬取
- 分布式(搭建集群):redis
- 请求传参的机制(深度爬取) **
- scrapy中合理的应用selenium
-
环境的安装
- pip install wheel
- 下载twisted http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
- 进入下载目录,执行pip install Twisted‑20.3.0‑cp37‑cp37m‑win_amd64.whl
- pip install pywin32
- pip install scrapy
-
创建工程(在终端进行)
- scrapy startproject ProName
- cd ProName
- scrapy genspider first www.xxx.com (这个网址可以随便写,工程建立后可以修改的)
- 执行 scrapy crawl spiderName
- settings文件配置:
- 不遵从robots协议
- UA伪装
- 日志等级 LOG_LEVEL = 'ERROR'
- 日志输出 LOG_FILE = 'log.txt'
-
scrapy的数据解析
-
scrapy的持久化存储
- 基于终端指令:
- 只可以将parse方法的返回值存储到磁盘文件中
- scrapy crawl first -o file.csv
- 基于管道: pipelines.py
- 编码流程
- 1.数据解析
- 2.在item的类中定义相关的属性
- 3.将解析的数据存储封装到item类型的对象中,item['p']
- 4.将item对象提交给管道
- 5.在管道类中的process_item方法负责接收item对象,然后对item对象进行任意形式的存储
- 6.在配置文件中开启管道
- 细节补充:
- 管道文件中的一个管道表示将数据存储到某一种形式的平台中
- 如果管道文件中定义了多个管道类,爬虫类提交的item会给到谁?
- 优先级最高的管道类
- 在process_item方法中的return item表示将item传递给下一个即将执行的管道类
- 编码流程
- 基于终端指令: