它是一个屏幕抓取以及 web 抓取框架, 具备快速、高层次的特点, 适用于抓取 web 站点这个行为, 能从中提取呈现结构化的数据, 其用途是非常广泛的, 涵盖了数据挖掘、监测以及自动化测试这些方面。

这一事物吸引人之处在于, 它属于一个框架, 在这个框架下, 任何人能够依据自身需求便利地完成修改。并且, 它还给出了多种类型爬虫的基类, 像爬虫这种类型, 以及其他类型等。此外, 其最新版本又增添了对 web2.0 爬虫的支持。

架构

(引擎):负责中间的通讯,信号、数据传递等。

它属于调度器, 负责接受引擎发送过来的请求, 会按照一定的方式进行整理排列, 之后入队, 当引擎有需要的时候, 再交还给引擎。

下载器, 承担着下载任务, 负责下载引擎发送出的全部请求, 它把获取到的内容交还给引擎, 而引擎会将其交给别的部分来进行处理。

有一种程序名为爬虫, 它承担着处理全部信息, 从中凭借专门方式剖析并提取数据的职责, 获取Item字段所需的数据, 并且将那些需要进一步追踪的URL递交给引擎, 再次且重新进入调度器。

“Item(管道)”, 是这样一个地方, 它承担处理在其中获取到的Item的任务, 并且此处所负责的是进行后期处理, 包括详细分析、过滤以及存储等操作。

(下载中间件):一个可以自定义扩展下载功能的组件。

一种能够自行进行扩展的, 可对操作引擎以及中间通信展开操作的功能组件, 它被称作中间件。

基本使用

能够营造一个空项目率先, 借助CMD也可以, 或者是IDE工具的也成, 运用cmd就得手动去切换目录, 自带的控制台就无需。最先进入到项目的目录便能着手营造咱们的首个 爬虫。

第一步: 创建爬虫项目

在控制台输入:

scrapy startproject 项目名字  (不能数字开头也不能包含中文)

例如:

在输入完毕之后, 便会自动生成如此数量众多的文件夹, 先不要慌张哈, 咱们重点关注的是: 项目的名称\项目的名称\这个范围里所包含的内容, 这里面的才是最为关键被重点关注的, 其他部分事宜后续再去讲述解说。我所在之处呈现的情况是这样: 是这种“//”形式。

第二步:创建爬虫文件   先进入文件夹  创建爬虫文件ZhAoAnSh.CoM

        进入文件夹命令: cd 项目的名字\项目的名字\spiders

我这里的命令是   cd .\\\\

创建爬虫文件命令:  scrapy genspider 爬虫文件的名字 要爬取的网页  我这里拿百度举例子
scrapy genspider baidu http://www.baidu.com

就会生成一个你命名.py的文件,

import scrapy
class BaiduSpider(scrapy.Spider):
    # 爬虫的名字  用于运行爬虫的时候 使用的值
    name = 'baidu'
    # 允许访问的域名
    allowed_domains = ['www.baidu.com']
    # 起始的url地址 指的是第一次要访问的域名
    start_urls = ['http://www.baidu.com/']
    pass
        

名字: 这儿所表达的是爬虫的名称, 于控制台给予它之后, 运行均是凭借这个名字来开展运行的。

是允许访问的域名

是第一次要访问的域名

在parse()方法里, 存在着一个属性, 该属性直接获取了响应的请求连接数据。上边的响应数据借助这个数据, 能够获取网页的源码, 还能解析网页数据去进行爬虫。

爬虫命令帮助可以通过这个命令查看: --help

Scrapy爬虫开发_python scrapy 教程_Scrapy框架教程

第三步, 去执行与爬虫文件相关操作, 所使用的命令是, 使用“-crawl”加上爬虫的名字, 这里所提到的爬虫名字是baidu, 前面已经阐述过。

一开始, 我们于所生成的py文件的parse方法里头写入些许的内容, 针对看一看可不可以将其执行呈现出来。

可以看到我的打印语句是没有出来的,这是什么原因呢?

这背后的原因在于, 存在着诸多公司, 它们有着一项被称作“君子协议”的约定, 此约定名为协议, 只要我们不去遵循它就行, 接着要寻找到文件夹当中的.py文件, 把其中的=True进行注释操作, 或者将其改成False, 如此便可。

ROBOTSTXT_OBEY = False
​
robots协议也称爬虫协议、爬虫规则等,是指网站可建立一个robots.txt文件来告诉搜索引擎哪些页面可以抓取,
哪些页面不能抓取,而搜索引擎则通过读取robots.txt文件来识别这个页面是否允许被抓取。但是,这个robots协
议不是防火墙,也没有强制执行力,搜索引擎完全可以忽视robots.txt文件去抓取网页的快照。 [5]  如果想单独
定义搜索引擎的漫游器访问子目录时的行为,那么可以将自定的设置合并到根目录下的robots.txt,或者使用
robots元数据(Metadata,又称元数据)。
robots协议并不是一个规范,而只是约定俗成的,所以并不能保证网站的隐私。
​

我们在重新运行一次即可看到我们打印的数据了!

上述所呈现的便是其基本怎样用, 进行安装以及去创建基础的爬虫程序了。接下来, 我们针对它的parse()当中的情况予以讲解一番呀!

def parse(self, response):
    print("123123123123")

在这里的, 倘若曾经使用过, 或者是相关的小伙伴, 或许能够知晓这究竟是什么东西了, 它类似于, 某某某和获取的返回数值。

我们可以打印一下看到他是个什么类型和值:WWw.ZhAoAnSh.CoM

呈现在眼前的打印结果是一种类别, 借助源码能够知晓其中具备一个text属性, 并且存在Xpath方法, 这表明它能够直接对网页源码予以解析, 而无需我们另行导入xpath包, 这恰恰是其优势所在。text属性里所书写的是网页的字符串源码, 我们来进行打印查看。

Scrapy框架教程_Scrapy爬虫开发_python scrapy 教程

我这直接写到html文件中了,可以看到可以是字符串源码

import scrapy
class BaiduSpider(scrapy.Spider):
    name = 'baidu'
    allowed_domains = ['www.baidu.com']
    start_urls = ['http://www.baidu.com/']
    def parse(self, response):
        print("123123123123")
        print(response)
        print(type(response))
        content = response.text
        print(content)
        # 输出到html文件,方便查看
        with open("baidu.html", "w", encoding='utf-8') as op:
            op.write(content)

python scrapy 教程_Scrapy爬虫开发_Scrapy框架教程

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐