在上一篇文章我们已经对scrapy框架有了一个简单的认识,那么本篇文章中我们就来对其进行一个简单的应用,不同于原生爬虫代码的是,scrapy是一个相对较成熟的框架,所以并不能直接去执行某一个python文件来执行采集任务,而是要通过脚本命令来实现项目的启动。
一、scrapy的步骤简述及代码实现
1.1 创建scrapy项目
scrapy startproject YourProjectName
首先打开终端(本篇文章中以pycharm中的terminal为例),然后进入到欲创建项目的目录。
命令键入后如上图所示,然后就可以在上图所示的目录中看到新建的项目文件夹。
1.2 创建爬虫文件
创建成功后根据提示来创建爬虫文件,命令如下:
cd myproject01
scrapy genspider example example.com
此处要注意格式,genspider后第一个参数为创建的爬虫任务名,第二个为访问域名(可随便填写)。回车后在项目文件夹中的spiders文件夹内可以看到刚刚创建的爬虫文件。
双击打开后如下:
接下来我们以某图片素材网为例进行讲解。
首先把要访问的目标地址添加到起始URL列表中,然后在parse方法中直接输出response查看响应结果。
# spiders.py
import scrapy
class Spider01Spider(scrapy.Spider):
name = "spider01"
allowed_domains = ["xxx.com"]
start_urls = ["https://sc.chinaz.com/tupian/siwameinvtupian.html"]
def parse(self, response):
print(response)
注意,此时先不要开始执行任务,先来到配置文件settings.py
中进行几处修改。
# 第一处变化,添加scrapy中请求时的默认UA
USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36"
# Obey robots.txt rules
# 第二处变化,将True改为False,表示访问时不按照君子协议进行数据采集
ROBOTSTXT_OBEY = False
# 第三处变化,添加参数LOG_LEVEL,值为ERROR,表示设置项目中日志等级为ERROR,添加后项目启动后只会显示错误信息,其他的调试信息不会再输出
LOG_LEVEL = 'ERROR'