scrapy是什么?
它是Python的一个爬虫框架,非常出名、非常强悍,因为是框架,所以需要学习的就是框架的用法,当然,它的底层肯定使用了多进程、多线程、队列等技术。
scrapy框架由五部分组成,包括:引擎、下载器、spiders、调度器(schedule)、管道(pipeline),一般我们进行爬虫实现的代码写到spiders、管道中,在spiders里面我们可以实现文件内容解析、链接提取等,在管道中,可以实现选择我们的数据是保存到文件中还是数据库(mysql、MongoDB)中。
scrapy框架的安装
在终端输入:pip install scrapy即可完成安装。
如果安装过程中出现如下错误:
building 'twisted.test.raiser' extension
error: Microsoft Visual C++ 14.0 is required. Get it with "Microsoft Visual C++ Build Tools": http://landinghub.visualstudio.com/visual-cpp-build-tools
解决方案如下:
下载twisted对应版本的whl文件(如我的Twisted-17.9.0-cp36-cp36m-win_amd64.whl),cp后面是python版本,amd64代表64位,在终端运行如下命令即可安装,注意python版本必须是64位的:
pip install C:\Users\CR\Downloads\Twisted-17.9.0-cp36-cp36m-win_amd64.whl
scrapy框架的简单使用
(1)创建项目
scrapy startproject myproject
注:在mac中报错zsh: command not found: scrapy
解决方法:python3 -m scrapy startproject myproject即可。
如图所示:
(2)认识目录结构
myproject
myproject 真正的项目文件
__pycache__ 缓存文件
spiders 爬虫文件存放的地方
__pycache__
__init__.py
lala.py 爬虫文件(*)
__init__.py 包的标志
items.py 定义数据结构的地方(*)
middlewares.py 中间件
pipelines.py 管道文件(*)
settings.py 配置文件(*)
scrapy.cfg 不需要管
(3)生成爬虫文件
cd myproject
scrapy genspider baidu www.baidu.com
注:在mac中报错zsh: command not found: scrapy
解决方法:python3 -m scrapy genspider baidu www.baidu.com即可。
name: 爬虫名字
allowed_domains: 允许的域名
start_urls: 起始url
parse: 自动回调的解析内容函数
(4)运行爬虫程序
cd myproject/myproject/spiders
scrapy crawl baidu
在程序运行的过程中可能会出现问题可以通过以下方式进行解决:
1、pywin32安装一下,注意版本
2、取消遵从robots协议
settings.py中第22行
3、修改UA头部信息
settings.py中第19行
(5)存储爬虫文件
爬取的文件可以存储为**.json,**.xml,**.csv形式,使用方法如下:
scrapy crawl baidu -o baidu.json
scrapy crawl baidu -o baidu.xml
scrapy crawl baidu -o baidu.csv
注意:当文件输出为csv的时,中间可能有空行,可以查资料进行解决