前言
本篇文章简单介绍一下Scrapy框架的基本使用方法,以及在使用过程中遇到的一些问题和解决方案。
Scrapy框架的基本使用
环境的安装
1.输入下述指令安装wheel
pip install wheel
2.下载twisted
这里提供一个下载链接:http://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted
注:这里下载有两点需要注意:
- 要下载与自己python版本相对应的文件,
cpxx
为版本号。(例如我的python版本为3.8.2,就下载cp38的文件) - 根据操作系统位数下载对应文件。32位操作系统下载
win32
;64位操作系统下载win_amd64。
3.安装twisted
在上一步下载好的twisted的目录下输入下面的命令:
代码语言:javascript复制pip install Twisted-20.3.0-cp38-cp38-win_amd64.whl
4.输入下述指令安装pywin32
pip install pywin32
5.输入下述指令安装scrapy
pip install scrapy
6.测试
在终端里输入scrapy
命令,没有报错即表示安装成功。
创建scrapy工程
这里是在PyCharm中创建的scrapy工程
1.打开Terminal
面板,输入下述指令创建一个scrapy工程
scrapy startproject ProjectName
ProjectName
为项目名称,自己定义。
2.自动生成如下目录
3.创建一个爬虫文件
首先进入刚刚创建的工程目录下:
代码语言:javascript复制cd ProjectName
然后在spiders子目录中创建一个爬虫文件
代码语言:javascript复制scrapy genspider spiderName www.xxx.com
spiderName
为爬虫文件名称,自己定义。
4.执行工程
scrapy crawl spiderName
文件参数的修改
为了能更好的执行爬虫项目,需要修改一些文件的参数。
1.spiderName.py
该爬虫文件的内容如下:
代码语言:javascript复制import scrapy
class FirstSpider(scrapy.Spider):
# 爬虫文件的名称:就是爬虫源文件的一个唯一标识
name = 'spiderName'
# 允许的域名:用来限定start_urls列表中哪些url可以进行请求发送
allowed_domains = ['www.baidu.com']
# 起始的url列表:该列表中存放的url会被scrapy自动进行请求的发送
start_urls = ['http://www.baidu.com/','https://www.douban.com']
# 用于数据解析:response参数表示的就是请求成功后对应的响应对象
def parse(self, response):
pass
注:
allowed_domains
列表用来限定请求的url。一般情况不需要,将其注释掉即可。
2.settings.py
1). ROBOTSTXT_OBEY
找到ROBOTSTXT_OBEY
关键字,此处默认参数为Ture。(即项目默认遵守robots协议
)为了项目练习,可以暂时将其改为False
。
# Obey robots.txt rules
ROBOTSTXT_OBEY = False
2). USER_AGENT
找到USER_AGENT
关键字,此处默认注释掉了。修改其内容,以避免UA反爬。
# Crawl responsibly by identifying yourself (and your website) on the user-agent
USER_AGENT = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36 Edg/88.0.705.50'
3). LOG_LEVEL
为了更清晰的查看项目运行结果(项目默认运行结果会打印大量的日志信息),可以手动添加LOG_LEVEL
关键字。
# 显示指定类型的日志信息 LOG_LEVEL = 'ERROR' # 只显示错误信息
可能遇到的问题
1.成功安装完scrapy
,但是在创建爬虫文件后依然显示import scrapy
有误。
本人练习时用的环境都是基于Python3.8创建的各种虚拟环境,然而在搭建scrapy项目时pip install scrapy
始终报错。
最初手动在官网:https://scrapy.org/ 下载scrapy库,然后安装到虚拟环境的site-packages
目录下,果然回头看import scrapy
显示正常了,程序也可以跑。但是依然打印大量的错误信息,通过PyCharm的Python Interpreter
查看并没有Scrapy
库在内。
无奈又尝试了一些解决方案,无果…
最后发现Anaconda
自带Scrapy
库,于是又基于Anaconda
创建了一个虚拟环境,完美运行~~~~
结尾
好好学习