php 爬虫抓取网页数据(常用指令如下所示:纯Python语言编写框架格式说明 )
优采云 发布时间: 2021-11-07 03:08php 爬虫抓取网页数据(常用指令如下所示:纯Python语言编写框架格式说明
)
Scrapy是一个基于Twisted的异步处理爬虫框架,纯Python编写。Scrapy 框架应用广泛,常用于数据采集、网络监控、自动化测试。
提示:Twisted 是一个事件驱动的网络引擎框架,也是用 Python 实现的。
下载并安装Scrapy Scrapy 支持常见的主流平台,如Linux、Mac、Windows 等,因此您可以轻松安装它。本节以Windows系统为例,在CMD命令行执行以下命令:
python -m pip install Scrapy
由于 Scrapy 需要很多依赖,所以安装需要很长时间。请耐心等待。其他平台的安装方法请参考官方文档《》。
验证安装如下:
C:\Users\Administrator>python
Python 3.7.4 (tags/v3.7.4:e09359112e, Jul 8 2019, 19:29:22) [MSC v.1916 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import scrapy
>>> exit()
如果exit()操作可以正常进行并且没有ERROR错误,则安装成功。创建 Scrapy 爬虫项目 Scrapy 框架提供了一些常用的命令来创建项目、查看配置信息和运行爬虫程序。常用命令如下:
常用指令命令格式说明
启动项目
启动项目
创建一个新项目。
蜘蛛侠
易碎的genspider
创建一个新的爬虫文件。
运行蜘蛛
爬虫爬虫
要运行爬虫文件,无需创建项目。
爬行
爬行
要运行爬虫项目,您必须创建该项目。
列表
草稿清单
列出项目中的所有爬虫文件。
看法
草稿视图
从浏览器打开 url 地址。
贝壳
csrapy 外壳
命令行交互模式。
设置
抓取设置
查看当前项目的配置信息。
1) 创建第一个 Scrapy 爬虫项目。创建一个名为百度的爬虫项目。打开CMD命令提示符,执行以下操作:
C:\Users\Administrator>cd Desktop
C:\Users\Administrator\Desktop>scrapy startproject Baidu
New Scrapy project 'Baidu', using template directory 'd:\python\python37\lib\site-packages\scrapy\templates\project', created in:
C:\Users\Administrator\Desktop\Baidu
# 提示后续命令操作
You can start your first spider with:
cd Baidu
scrapy genspider example example.com
打开新创建的项目“百度”,会有如下项目文件,如图:
图 1:项目文件
接下来,创建一个爬虫文件,如下所示:
C:\Users\Administrator\Desktop>cd Baidu
C:\Users\Administrator\Desktop\Baidu>scrapy genspider baidu www.baidu.com
Created spider 'baidu' using template 'basic' in module:
Baidu.spiders.baidu
下面显示了项目的目录树结构和每个文件的作用:
Baidu # 项目文件夹
├── Baidu # 用来装载项目文件的目录
│ ├── items.py # 定义要抓取的数据结构
│ ├── middlewares.py # 中间件,用来设置一些处理规则
│ ├── pipelines.py # 管道文件,处理抓取的数据
│ ├── settings.py # 全局配置文件
│ └── spiders # 用来装载爬虫文件的目录
│ ├── baidu.py # 具体的爬虫程序
└── scrapy.cfg # 项目基本配置文件
从上面的目录结构可以看出,Scrapy将整个爬虫程序划分为不同的模块,让每个模块处理不同的任务,模块之间紧密相连。因此,您只需要在相应的模块中编写相应的代码,就可以轻松实现一个爬虫程序。Scrapy 爬虫工作流程 Scrapy 框架由五个主要组件组成,如下图:
Scrapy 的五个主要组件名称功能说明
引擎
整个Scrapy框架的核心主要负责不同模块之间数据和信号的传输。
调度器
用于维护引擎发送的请求队列。
下载器
接收引擎发送的请求,生成请求的响应对象,将响应结果返回给引擎。
蜘蛛(履带)
处理引擎发送的响应主要用于解析、提取数据并获取需要跟进的二级URL,然后将这些数据返回给引擎。
管道(项目管道)
使用数据存储对引擎发送的数据做进一步的处理,比如存储在MySQL数据库中。
在整个执行过程中,还涉及到两个中间件,分别是Downloader Middlewares和Spider Middlewares,它们的作用不同:
Scrapy工作流程图如下:
图 1:工作流程*敏*感*词*
上述*敏*感*词*说明如下。当一个爬虫项目启动时,Scrapy 框架会执行以下任务:
上面的过程会一直循环下去,直到没有要爬取的URL,也就是当URL队列为空时,不会停止。
使用Scrapy框架时,需要稍微修改设置配置文件。现在使用Pycharm打开刚刚创建的“百度”项目,修改配置文件如下:
# 1、定义User-Agent
USER_AGENT = 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0)'
# 2、是否遵循robots协议,一般设置为False
ROBOTSTXT_OBEY = False
# 3、最大并发量,默认为16
CONCURRENT_REQUESTS = 32
# 4、下载延迟时间
DOWNLOAD_DELAY = 1
其他常用配置项介绍:
# 设置日志级别,DEBUG < INFO < WARNING < ERROR < CRITICAL
LOG_LEVEL = ' '
# 将日志信息保存日志文件中,而不在终端输出
LOG_FILE = ''
# 设置导出数据的编码格式(主要针对于json文件)
FEED_EXPORT_ENCODING = ''
# 非结构化数据的存储路径
IMAGES_STORE = '路径'
# 请求头,此处可以添加User-Agent、cookies、referer等
DEFAULT_REQUEST_HEADERS={
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
'Accept-Language': 'en',
}
# 项目管道,300 代表激活的优先级 越小越优先,取值1到1000
ITEM_PIPELINES={
'Baidu.pipelines.BaiduPipeline':300
}
# 添加下载器中间件
DOWNLOADER_MIDDLEWARES = {}