前面我们看的所有爬虫相关的知识都是基于request模块来实现的。
Python的爬虫是有一些很好用的框架。比如:Scrapy、PySpider等。
我这里主要来看下scrapy框架
Scrapy框架主要的特点:高性能的持久化存户,异步的数据下载,高性能的数据解析,分布式。里面几乎封装好了开发者所需要的所有模块,例如:request,代理,日志,url自动去重等
一:环境安装
这部分需要区别系统:
1:linux安装
pip install scrapy
2:windows安装
pip install wheel
下载twisted,下载地址为:www.lfd.uci.edu/~gohlke/pyt…
安装twisted:
pip install Twisted-20.3.0-cp37-cp37m-win_amd64.whl
pip install pywin32
pip install scrapy
测试,在命令终端中输入scrapy命令,没有报错即表示安装成功。
二:开始使用scrapy
1:创建项目
Scrapy的使用方法与我们之前看过的django差不多。都需要使用命令来创建一个项目,首先我们切换到一个目录,输入如下命令:
scrapy startproject scrpayProject
创建项目成功。
2:目录结构
scrapy.cfg:爬虫项目的配置文件。
init.py:爬虫项目的初始化文件,用来对项目做初始化工作。
items.py:爬虫项目的数据容器文件,用来定义要获取的数据。
pipelines.py:爬虫项目的管道文件,用来对items中的数据进行进一步的加工处理。
settings.py:爬虫项目的配置文件,包含了爬虫项目的设置信息。
middlewares.py:爬虫项目的中间件文件,
spiders:爬虫目录(放置爬虫原文件)
3 :开始使用scrapy框架
爬虫的原文件统一放在spiders目录下。
(1):创建爬虫文件
首先我们在spiders目录下创建一个爬虫文件,注意,这里不是让你手动后去创建,要使用命令创建:
scrapy genspider spiderName www.xxx.com
(2):创建文件编写
我们在爬虫文件中写一段程序:
import scrapy
class BlogSpider(scrapy.Spider):
# 爬虫文件的名称,爬虫原文件的唯一标识
name = 'blog'
# 允许爬取的域名,主要用来限制 start_urls 中的域名,一般不用
allowed_domains = ['guanchao.site','l.guanchao.site']
# 起始的url列表:该列表中存放的url会被scrapy自动进行请求的发送
start_urls = ['guanchao.site/','https://…']
def parse(self, response):
print(response)
(3):执行爬虫文件
命令:
scrapy crawl blog
输出:
输出文字内容,截取部分图片,最好亲自试一下。
当然,如果不喜欢每次输出这么多的日志内容,我们可以在执行爬虫命令后加参数,例如:
scrapy crawl blog –nolog
输出:
<200 https://guanchao.site/>
<200 https://l.guanchao.site/>
但是这样会有一个问题,就是在程序出错的时候,他不会输出任何错误信息:
这就有点不好了。那么改如何解决呢?
在上一级目录的setting.py文件中配置日志输出等级:
Obey robots.txt rules(是否遵从网站 robots.txt协议)
ROBOTSTXT_OBEY = False
# 日志输出等级
LOG_LEVEL = 'ERROR'
我们在使用scrapy crawl blog输出,就没有那么多多余的日志,同时,错误的时候也会有报错信息的输出了。
以上大概就是scrapy的初步认识。
有好的建议,请在下方输入你的评论。