python爬虫scrapy框架教程_Python爬虫教程-30-Scrapy 爬虫框架介绍

从本篇开始学习 Scrapy 爬虫框架

Python爬虫教程-30-Scrapy 爬虫框架介绍

框架:框架就是对于相同的相似的部分,代码做到不出错,而我们就可以将注意力放到我们自己的部分了

常见爬虫框架:

scrapy

pyspider

crawley

Scrapy 是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中

Scrapy 的安装

可以直接在 Pycharm 进行安装

【PyCharm】>【file】>【settings】>【Project Interpreter】>【+】 >【scrapy】>【install】

具体操作截图:

70

点击左下角 install 静静等待

70

测试 Scrapy 是否安装成功

进入当前所在的环境

输入 scrapy 命令

截图:

70

这里就说明安装成功l

Scrapy 概述

包含各个部件

ScrapyEngine:神经中枢,大脑,核心

Scheduler 调度器:负责处理请求,引擎发来的 request 请求,调度器需要处理,然后交换引擎

Downloader 下载器:把引擎发来的 requests 发出请求,得到 response

Spider 爬虫:负责把下载器得到的网页/结果进行分解,分解成数据 + 链接

ItemPipeline 管道:详细处理 Item

DownloaderMiddleware 下载中间件:自定义下载的功能扩展组件

SpiderMiddleware 爬虫中间件:对 spider 进行功能扩展

数据流图:

70

绿色箭头是数据的流向

由 Spider 开始 Requests, Requests, Responses, Items

爬虫项目大致流程

1.新建项目:scrapy startproject xxx项目名

2.明确需要爬取的目标/产品:编写 item.py

3.制作爬虫:地址 spider/xxspider.py 负责分解,提取下载的数据

4.存储内容:pipelines.py

模块介绍

ItemPipeline

对应 pipelines 文件

爬虫提取出数据存入 item 后,item 中保存的数据需要进一步处理,比如清洗,去虫,存储等

Pipeline 需要处理 process_item 函数

process_item

spider 提取出来的 item 作为参数传入,同时传入的还有 spider

此方法必须实现

必须返回一个 Item 对象,被丢弃的 item 不会被之后的 pipeline

_ init _:构造函数

进行一些必要的参数初始化

open_spider(spider):

spider 对象对开启的时候调用

close_spider(spider):

当 spider 对象被关闭的时候调用

Spider

对应的是文件夹 spider 下的文件

_ init _:初始化爬虫名称,start _urls 列表

start_requests:生成 Requests 对象交给 Scrapy 下载并返回 response

parse:根据返回的 response 解析出相应的 item,item 自动进入 pipeline:如果需要,解析 url,url自动交给 requests 模块,一直循环下去

start_requests:此方法尽能被调用一次,读取 start _urls 内容并启动循环过程

name:设置爬虫名称

start_urls:设置开始第一批爬取的 url

allow_domains:spider 允许去爬的域名列表

start_request(self):只被调用一次

parse:检测编码

log:日志记录

中间件(DownloaderMiddlewares)

什么是中间件?

中间件是处于引擎和下载器中间的一层组件,可以有多个

参照上面的流程图,我们把中间件理解成成一个通道,简单说,就是在请求/响应等传输的时候,在过程中设一个检查哨,例如:

1.身份的伪装: UserAgent,我们伪装身份,不是在开始请求的时候就设置好,而是在请求的过程中,设置中间件,当检测到发送请求的时候,拦下请求头,修改 UserAgent 值

2.筛选响应数据:我们最开始得到的数据,是整个页面,假设某个操作,需要我们过滤掉所有图片,我们就可以在响应的过程中,设置一个中间件

比较抽象,可能不是很好理解,但是过程是其实很简单的

在 middlewares 文件中

需要在 settings 中设置以是生效

一般一个中间件完成一项功能

必须实现以下一个或者多个方法

process_request (self, request, spider)

在请求的过程中被调用

必须返回 None 或 Response 或 Request 或 raise IgnoreRequest

如果返回 None:scrapy 将继续处理 request

如果返回 Request:scrapy 会停止调用 process_request 并冲洗调度返回的 request

如果返回 Response:scrapy 将不会调用其他的 process_request 或者 process _exception,直接将该 response 作为结果返回,同时会调用 process _response

process_response (self, request, spider)

每次返回结果的时候自动调用

- 本笔记不允许任何个人和组织转载

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Scrapy是一个基于Python爬虫框架,它可以帮助我们快速高效地抓取网站数据。在这里,我将介绍Scrapy的基本用法,让您能够快速入门。 安装Scrapy ----------------------- 在安装Scrapy之前,我们需要先安装Python。然后,我们可以通过以下命令来安装Scrapy: ``` pip install scrapy ``` 创建Scrapy项目 ----------------------- 创建Scrapy项目的命令是: ``` scrapy startproject project_name ``` 这个命令将会在当前目录下创建一个名为project_name的文件夹,其中包含了Scrapy项目的基本结构。 编写Spider ----------------------- 在Scrapy中,Spider是用来定义爬取网站的规则的。我们可以通过以下命令来创建一个Spider: ``` scrapy genspider spider_name domain_name ``` 其中,spider_name是我们自己定义的Spider名称,domain_name是我们要抓取的网站域名。 接下来,我们需要在Spider中定义如何爬取网站。这里我们以爬取“http://quotes.toscrape.com/”网站上的名言警句为例。我们可以在Spider中定义如下规则: ```python import scrapy class QuotesSpider(scrapy.Spider): name = "quotes" start_urls = [ 'http://quotes.toscrape.com/page/1/', 'http://quotes.toscrape.com/page/2/', ] def parse(self, response): for quote in response.css('div.quote'): yield { 'text': quote.css('span.text::text').get(), 'author': quote.css('span small::text').get(), 'tags': quote.css('div.tags a.tag::text').getall(), } next_page = response.css('li.next a::attr(href)').get() if next_page is not None: yield response.follow(next_page, self.parse) ``` 在上述代码中,我们首先定义了Spider的名称,接着定义了我们要爬取的起始URL,最后定义了如何解析网页的函数parse()。在parse()函数中,我们使用了Scrapy的选择器来提取网页中的名言警句,并将其保存到字典中。接着,我们使用response.follow()函数来获取下一页的URL,并继续解析。 运行Spider ----------------------- 要运行我们刚才创建的Spider,我们可以使用以下命令: ``` scrapy crawl spider_name ``` 其中,spider_name是我们之前创建的Spider名称。 Scrapy会自动去抓取我们定义的起始URL,并根据我们定义的规则来解析网页。解析完成后,Scrapy会将结果保存到我们指定的位置。 总结 ----------------------- Scrapy是一个非常强大的Python爬虫框架,它可以帮助我们快速高效地抓取网站数据。在本教程中,我们介绍Scrapy项目的创建、Spider的定义以及如何运行Spider。如果您想更深入地学习Scrapy,可以参考官方文档:https://docs.scrapy.org/en/latest/。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值