网页抓取qq(Scrapyscrapy网络爬虫运行流程及组件:Scrapy)
优采云 发布时间: 2021-11-22 22:21网页抓取qq(Scrapyscrapy网络爬虫运行流程及组件:Scrapy)
1.scrapy的基本理解
Scrapy是一个为爬取网站数据和提取结构化数据而编写的应用框架。它可用于包括数据挖掘、信息处理或存储历史数据在内的一系列程序中。它最初是为页面抓取(更准确地说,网络抓取)而设计的,也可以用于检索 API(如 Web 服务)或一般网络爬虫返回的数据。
Scrapy还可以帮你实现爬虫过程中的网站认证、内容分析处理、重复爬取、分布式爬取等高级爬虫框架。
Scrapy主要包括以下组件:
Scrapy的运行过程大致如下:
1.首先,引擎从调度器中获取一个链接(URL),用于下一次抓取
2. 引擎将URL封装成请求(Request)发送给下载器,下载器下载资源并封装成响应包(Response)
3.然后,爬虫解析Response
4.如果实体(Item)被解析,就会交给实体管道做进一步处理。
5.如果解析出来的是一个链接(URL),那么这个URL就会交给Scheduler等待爬取
2.安装scrapy
虚拟环境安装:
sudo pip install virtualenv #安装虚拟环境工具
virtualenv ENV #创建虚拟环境目录
source ./ENV/bin/active #激活虚拟环境
pip install Scrapy #验证是否安装成功
pip list #验证安装
可以进行如下测试:
长凳
3.使用scrapy
在爬取之前,您需要创建一个新的 Scrapy 项目。输入要保存代码的目录,然后执行:
$ scrapy startproject 教程
该命令会在当前目录下新建一个目录tutorial,其结构如下:
|____scrapy.cfg
|____tutorial
| |______init__.py
| |______init__.pyc
| |____items.py
| |____items.pyc
| |____pipelines.py
| |____settings.py
| |____settings.pyc
| |____spiders
| | |______init__.py
| | |______init__.pyc
| | |____example.py
| | |____example.pyc
这些文件主要是:
scrapy.cfg:项目配置文件
教程/:项目python模块,你会在这里添加代码
教程/items.py:项目项目文件
教程/pipelines.py:项目管道文件
tutorial/settings.py:项目配置文件
教程/蜘蛛:放置蜘蛛的目录
3.1. 定义项
items 是将加载捕获数据的容器。它的工作原理类似于 Python 中的字典,但它提供了更多保护,例如填充未定义的字段以防止拼写错误。创建一个scrapy.Item类,定义类型为scrapy.Field的class属性声明了一个Item。我们为所需的项目建模。在教程目录中的 items.py 文件中进行编辑。
3.2. 写作蜘蛛
Spider 是一个用户编写的类,用于从域(或域组)中抓取信息,定义用于下载的初步 URL 列表,如何跟踪链接,以及如何解析这些网页的内容以提取项目。
要创建 Spider,请继承 scrapy.Spider 基类,并确定三个主要的、必需的属性:
name:爬虫的标识名。它必须是独一无二的。您必须在不同的爬虫中定义不同的名称。
start_urls:收录Spider启动时抓取的URL列表。因此,要检索的第一页将是其中之一。从初始 URL 获取的数据中提取后续 URL。我们可以使用正则表达式来定义和过滤需要跟进的链接。
parse():是spider的一种方法。调用时,在下载每个初始 URL 后生成的 Response 对象将作为唯一参数传递给函数。该方法负责解析返回的数据(响应数据),提取数据(生成项),生成需要进一步处理的URL的Request对象。
该方法负责解析返回的数据,匹配捕获的数据(解析为item),跟踪更多的URL。
在/tutorial/tutorial/spiders目录下创建
例子.py
3.3。爬行
进入项目根目录,运行命令
$scrapy 爬取示例
完整代码参考:标题中有抓取京东和豆瓣的方法。