网页音频抓取(一个网络爬虫程序的基本执行流程可以总结框架简介)
优采云 发布时间: 2022-04-19 21:25网页音频抓取(一个网络爬虫程序的基本执行流程可以总结框架简介)
scrapy框架介绍
scrapy 是一个用 Python 语言编写的开源网络爬虫框架(基于 Twisted 框架),目前支持
由 scrapinghub Ltd. 维护。Scrapy 易于使用、灵活且可扩展,拥有活跃的开发社区,并且是跨平台的。适用于 Linux、MaxOS 和 Windows 平台。
网络爬虫
网络爬虫是一种自动爬取互联网上网站内容信息的程序,也称为网络蜘蛛或网络机器人。大型爬虫广泛应用于搜索引擎、数据挖掘等领域。个人用户或企业也可以使用爬虫为自己采集有价值的数据。
网络爬虫的基本执行过程可以概括为三个过程:请求数据、解析数据和保存数据
数据请求
请求的数据除了普通的HTML,还包括json数据、字符串数据、图片、视频、音频等。
解析数据
数据下载完成后,分析数据内容并提取所需数据。提取的数据可以以各种形式保存。数据格式有很多种,常见的有csv、json、pickle等。
保存数据
最后将数据以某种格式(CSV、JSON)写入文件,或存储在数据库(MySQL、MongoDB)中。同时保存为一个或多个。
通常我们要获取的数据不只是在一个页面中,而是分布在多个页面中,这些页面是相互关联的,一个页面可能收录一个或多个指向其他页面的链接,提取当前后页面中的数据,页面中的一些链接也被提取出来,然后对链接的页面进行爬取(循环1-3步)。
在设计爬虫程序时,还需要考虑防止对同一页面的重复爬取(URL去重)、网页搜索策略(深度优先或广度优先等)、限制访问等一系列问题。爬虫访问边界。
从头开始开发爬虫程序是一项乏味的任务。为了避免大量的时间花在制造轮子上,我们在实际应用中可以选择使用一些优秀的爬虫框架。使用框架可以降低开发成本并提高程序质量。让我们专注于业务逻辑(抓取有价值的数据)。接下来带大家学习一下非常流行的开源爬虫框架Scrapy。
scrapy 安装
scrapy官网:
scrapy中文文档:
安装方法
在任何操作系统上,都可以使用 pip 安装 Scrapy,例如:
pip install scrapy
安装完成后,我们需要测试是否安装成功,通过以下步骤确认:
测试scrapy命令是否可以在终端执行
scrapy 2.4.0 - no active project
usage:
scrapy [options] [args]
Available commands :
bench Run quick benchmark test
fetch Fetch a URL using the scrapy down1oader
genspider Generate new spider using pre-defined temp1ates
runspider Run a self-contained spider (without creating a project)
settings Get settings values
she11 Interactive scraping console
startproject create new project
version Print scrapy version
view open URL in browser,as seen by scrapy
[ more ] More commands available when run from project directory
use "scrapy -h" to see more info about a command
进入scrapy bench测试连通性,如果出现以下情况,则安装成功:
图像.png
通过以上两项测试,说明Scrapy安装成功。如上图,我们安装了当前最新版本2.4.0.
注意:
在安装Scrapy的过程中,可能会遇到缺少VC++等错误,可以安装缺少模块的离线包
图像.png
安装成功后,在cmd下运行scrapy和上图并不是真的成功。检查scrapybench测试是否真的成功。如果没有错误,说明安装成功。
全局命令
scrapy 2.4.0 - no active project
usage:
scrapy [options] [args]
Available commands :
bench Run quick benchmark test #测试电脑性能
fetch Fetch a URL using the scrapy down1oader#将源代码下载下来并显示出来
genspider Generate new spider using pre-defined temp1ates#创建一个新的spider文件
runspider Run a self-contained spider (without creating a project)# 这个和通过craw1启动爬虫不同,scrapy runspider爬虫文件名称
settings Get settings values#获取当前的配置信息
she11 Interactive scraping console#进入scrapy 的交互模式
startproject create new project#创建爬虫项目
version Print scrapy version#显示scrapy框架的版本
view open URL in browser,as seen by scrapy#将网页document内容下载下来,并且在浏览器显示出来
[ more ] More commands available when run from project directory
use "scrapy -h" to see more info about a command
项目命令先scrapy爬虫项目要求
在网站()上爬取名言警句,专为爬虫初学者训练爬虫技术。
创建一个项目
在开始抓取之前,必须创建一个新的 Scrapy 项目。转到您打算存储代码的目录并运行以下命令:
(base) λ scrapy startproject quotes
New scrapy project 'quotes ', using template directory 'd: \anaconda3\lib\site-packages\scrapy\temp1ates\project ', created in:
D:\XXX
You can start your first spider with :
cd quotes
scrapy genspider example example. com
首先切换到新创建的爬虫项目目录,即/quotes目录。然后执行命令创建爬虫文件:
D:\XXX(master)
(base) λ cd quotes\
D:\XXX\quotes (master)
(base) λ scrapy genspider quotes quotes.com
cannot create a spider with the same name as your project
D :\XXX\quotes (master)
(base) λ scrapy genspider quote quotes.com
created spider 'quote' using template 'basic' in module:quotes.spiders.quote
此命令将创建一个收录以下内容的引号目录
robots.txt
robots协议,也叫robots.txt(统一小写),是一个ASCII编码的文本文件,存放在网站的根目录下,通常告诉网络搜索引擎的网络蜘蛛这个网站 哪些内容不应该被搜索引擎爬虫获取,哪些内容可以被爬虫获取。
机器人协议不是规范,而是约定。
#filename : settings.py
#obey robots.txt rules
ROBOTSTXT__OBEY = False
分析页面
在编写爬虫程序之前,首先需要对要爬取的页面进行分析。主流浏览器都有分析页面的工具或插件。这里我们使用Chrome浏览器的开发者工具(Tools→Developer tools)来分析页面。
数据信息
在 Chrome 中打开页面并选择“元素”以查看其 HTML 代码。
可以看到每个标签都包裹在里面
图像.png
写蜘蛛
分析完页面,接下来就是编写爬虫了。用 Scrapy 写蜘蛛,用 scrapy.Spider 写代码 蜘蛛是用户编写的一个类,用于从单个 网站(或 - 一些 网站)中抓取数据。
它收录一个用于下载的初始URL,如何跟随网页中的链接以及如何分析页面中的内容,提取生成项目的方法。
为了创建一个Spider,你必须扩展scrapy.Spider类并定义以下三个属性:
name:用于区分Spider。名称必须唯一,不能为不同的蜘蛛设置相同的名称。 start _urls:收录 Spider 在启动时爬取的 urs 列表。因此,
要获取的第一页将是其中之一。从初始 URL 获得的数据中提取后续 URL。 parse():是蜘蛛的一种方法。调用时,每个初始 URL 完成下载后生成的 Response 对象将作为唯一参数传递给此函数。该方法负责解析返回的数据(响应
data),提取数据(生成项目)并为需要进一步处理的 URL 生成 Request 对象。
import scrapy
class QuoteSpi der(scrapy . Spider):
name ='quote'
allowed_ domains = [' quotes. com ']
start_ urls = ['http://quotes . toscrape . com/']
def parse(self, response) :
pass
下面简单介绍一下quote的实现。
页面解析函数通常实现为*敏*感*词*函数,从页面中提取的每一项数据以及对链接页面的每个下载请求都通过yield语句提交给Scrapy引擎。
解析数据
import scrapy
def parse(se1f,response) :
quotes = response.css('.quote ')
for quote in quotes:
text = quote.css( '.text: :text ' ).extract_first()
auth = quote.css( '.author : :text ' ).extract_first()
tages = quote.css('.tags a: :text' ).extract()
yield dict(text=text,auth=auth,tages=tages)
关键点:
response.css(response中的数据可以直接用css语法提取。start_ur1s中可以写多个url,可以拆分成列表格式。extract()就是提取css中的数据对象,提取后为List,否则为对象。而extract_first()是提取第一个运行的爬虫
运行/quotes目录下的scrapycrawlquotes,运行爬虫项目。
运行爬虫后发生了什么?
Scrapy 为 Spider 的 start_urls 属性中的每个 URL 创建一个 scrapy.Request 对象,并将 parse 方法分配给 Request 作为回调函数。
Request对象被调度,执行生成一个scrapy.http.Response对象并发回spider的parse()方法处理。
完成代码后,运行爬虫爬取数据,在shell中执行scrapy crawl命令运行爬虫'quote',并将爬取的数据存储在csv文件中:
(base) λ scrapy craw1 quote -o quotes.csv
2021-06-19 20:48:44 [scrapy.utils.log] INF0: Scrapy 1.8.0 started (bot: quotes)
等待爬虫运行结束后,会在当前目录生成一个quotes.csv文件,其中的数据已经以csv格式保存。
-o 支持保存为各种格式。保存的方式也很简单,只要给出文件的后缀名即可。 (csv、json、pickle等)