技术文章
当前位置:首页 > Python技术文章 > Scrapy框架使用的基本知识

Scrapy框架使用的知识点总结

  • 发布时间:
  • 作者:码农之家原创
  • 点击:125

这篇文章主要知识点是关于python、scrapy、scrapy、框架、scrapy、框架使用的基本知识、强大的爬虫框架Scrapy是什么? 的内容,如果大家想对相关知识点有系统深入的学习,可以参阅以下电子书

精通Scrapy网络爬虫
  • 类型:爬虫大小:17.69 MB格式:PDF出版:清华大学出版社作者:刘硕
立即下载

更多Python相关的学习资源可以参阅 Python电子书程序设计电子书 等栏目。

Scrapy框架使用的基本知识

scrapy是一个基于Twisted的异步处理框架,可扩展性很强。优点此处不再一一赘述。

下面介绍一些概念性知识,帮助大家理解scrapy。

一、数据流向

要想熟练掌握这个框架,一定要明白数据的流向是怎么一个过程。总结如下:

1.引擎先打开网站,请求url。

2.引擎通过调度器以Request形式调度url。

3.引擎请求下一个url。

4.调度器将url通过Downloader Middlewares发送给引擎

5.Downloader 生成response,通过Downloader Middlewares发送给引擎

6.引擎接收Response 通过spiderMiddleware发送给spider处理

7.spider处理response

8.引擎将spider处理的item给ItemPipeline 然后将新的Request给调度器。

二、各个结构的作用

DownloderMiddleware

调度器会从队列之中拿出Request发送给Downloader执行下载,这个过程会经过DownloaderMiddleware的处理。

作用的位置有两个:

  • 在调度器调出Request发送给Downloader之前。
  • 下载之后生成Response发送给spider之前。

核心方法有三个:

process_request(request,spider)

Request 到达Downloader之前,就会被调用

参数介绍:

  •          request :Request对象,被处理的Request。
  •          spider:spider对象,上面被处理的Request对应的spider。

返回值:

1.返回None 调用别的process_request()方法,直至将Request执行得到Response才会结束。

2.返回Response对象,低优先级的process_request()process_exception不调用。

3.返回request对象,低优先级的process_request()停止执行,返回新的Request

process_response(request,response,spider)

作用位置:

  • Downloader 执行Request之后,会得到对应的Reponse ,scrapy 引擎会将Response发送给spider进行解析,发送之前调用这个方法对Response进行处理。

返回值的情况:

1.返回Request低优先级的process_respons()不调用。

2.返回response低优先级的process_respons()继续调用。

process_exception(request,exception,spider)

此函数主要是用来处理异常的。

spiderMiddleware

作用位置:

  • Downloader生成Response之后会发送给spider,
  • 在发送之前,会经过spiderMiddleware处理。

核心方法:

process_soider_input(response,spider)

返回值:

1.返回None

 继续处理Response,调用所有的spiderMiddleware,知道spider处理

2.跑出异常

直接调用Request的errback()方法,使用process_spider_output()处理。

process_spider_output(response,result,spider)

当spider处理Response返回结果时,被调用。

process_spider_exception(response,exception,spider)

返回值:none

继续处理response,返回一个可迭代对象,process_spider_output()方法被调用。

process_start_request(start_requests,spider)

spider启动的Request为参数被调用,必须返回request

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对码农之家的支持。如果你想了解更多相关内容请查看下面相关链接

强大的爬虫框架Scrapy是什么?

网络爬虫(Web crawler),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本,它们被广泛用于互联网搜索引擎或其他类似网站,可以自动采集所有其能够访问到的页面,以获取这些网站的内容。而Scrapy则是一种十分强大的爬虫框架,并且它是用python编写的。下面我们来一起看看什么是Scrapy?

强大的爬虫框架Scrapy是什么?

一、所需知识

需要的知识有:linux系统 + Python语言 +Scrapy框架 + XPath(XML路径语言) + 一些辅助工具(浏览器的开发者工具和XPath helper插件)。

我们的爬虫是使用Python语言的Scrapy爬虫框架开发,在linux上运行,所以需要熟练掌握Python语言和Scrapy框架以及linux操作系统的基本知识。

我们需要使用XPath从目标HTML页面中提取我们想要的东西,包括汉语文字段落和“下一页”的链接等。

浏览器的开发者工具是编写爬虫主要使用的辅助工具。使用该工具可以分析页面链接的规律,可以用来定位HTML页面中想要提取的元素,然后提取其XPath表达式用于爬虫代码中,还可以查看页面请求头的Referer、Cookie等信息。如果爬取的目标是动态网站,该工具还可以分析出背后的JavaScript请求。

XPath helper插件是chrome的一个插件,基于chrome核的浏览器也可以安装。XPath helper可以用来调试XPath表达式。

二、环境搭建

安装Scrapy可以使用pip命令:pip install Scrapy

Scrapy相关依赖较多,因此在安装过程中可能遇到如下问题:

ImportError: No module named w3lib.http

  解决:pip install w3lib

ImportError: No module named twisted

解决:pip install twisted

ImportError: No module named lxml.HTML

解决:pip install lxml

error: libxml/xmlversion.h: No such file or directory

解决:apt-get install libxml2-dev libxslt-dev

    apt-get install Python-lxml

ImportError: No module named cssselect

解决:pip install cssselect

ImportError: No module named OpenSSL

解决:pip install pyOpenSSL

建议:

使用简单的方法:使用anaconda安装。

三、Scrapy框架

1. Scrapy简介

Scrapy是大名鼎鼎的爬虫框架,是使用Python编写的。Scrapy可以很方便的进行web抓取,并且也可以很方便的根据自己的需求进行定制。

Scrapy整体架构大致如下:

强大的爬虫框架Scrapy是什么?

2.Scrapy组件

Scrapy主要包括了以下组件:

引擎(Scrapy)

用来处理整个系统的数据流,触发事务(框架核心)。

调度器(Scheduler)

用来接受引擎发过来的请求,压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址。

下载器(Downloader)

用于下载网页内容, 并将网页内容返回给蜘蛛(Scrapy下载器是建立在twisted这个高效的异步模型上的) 。

爬虫(Spiders)

爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。用户也可以从中提取出链接,让Scrapy继续抓取下一个页面。

项目管道(Pipeline)

负责处理爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。

下载器中间件(Downloader Middlewares)

位于Scrapy引擎和下载器之间的框架,主要是处理Scrapy引擎与下载器之间的请求及响应。

爬虫中间件(Spider Middlewares)

介于Scrapy引擎和爬虫之间的框架,主要工作是处理蜘蛛的响应输入和请求输出。

调度中间件(Scheduler Middewares)

介于Scrapy引擎和调度之间的中间件,从Scrapy引擎发送到调度的请求和响应。

Scrapy运行流程:

1.引擎从调度器中取出一个链接(URL)用于接下来的抓取

2.引擎把URL封装成一个请求(Request)传给下载器

3.下载器把资源下载下来,并封装成应答包(Response)

4.爬虫解析Response

5.解析出实体(Item),则交给实体管道进行进一步的处理

6.解析出的是链接(URL),则把URL交给调度器等待抓取

以上就是强大的爬虫框架Scrapy是什么?的详细内容,更多请关注码农之家其它相关文章!

以上就是本次给大家分享的关于Python的全部知识点内容总结,大家还可以在下方相关文章里找到python字符串与url编码转换、 Python3结合Dlib实现人脸识别、 python里dict变成list的实例方、 等python文章进一步学习,感谢大家的阅读和支持。

上一篇:Python openpyxl遍历所有sheet查找特定字符串的实例方法

下一篇:Python实例化class的执行顺序实例方法

展开 +

收起 -

相关电子书
学习笔记
网友NO.160485

Python爬虫框架Scrapy的使用教程

本篇文章给大家带来的内容是关于Python爬虫框架Scrapy的使用教程,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 大家好,本篇文章我们来看一下强大的Python爬虫框架Scrapy。Scrapy是一个使用简单,功能强大的异步爬虫框架,我们先来看看他的安装。 Scrapy的安装 Scrapy的安装是很麻烦的,对于一些想使用Scrapy的人来说,它的安装常常就让很多人死在半路。在此我将我的安装过程和网络上整理的安装方法,分享给大家,希望大家能够安装顺利。 Windows安装 开始之前,我们要确定自己安装了Python,本篇文章我们以Python3.5为例。Scrapy有很多依赖的包,我们来一一安装。 首先,使用pip -v,查看pip是否安装正常,如果正常,那么我们进行下一步; pip install wheel这个包我们之前的文章介绍过,安装好他我们就可以安装一些wheel件; lxml安装,之……

网友NO.847863

Scrapy框架爬取西刺代理网免费高匿代理的实现代码

分析 需求: 爬取西刺代理网免费高匿代理,并保存到MySQL数据库中。 这里只爬取前10页中的数据。 思路: 分析网页结构,确定数据提取规则 创建Scrapy项目 编写item,定义数据字段 编写spider,实现数据抓取 编写Pipeline,保存数据到数据库中 配置settings.py文件 运行爬虫项目 代码实现 items.py import scrapyclass XicidailiItem(scrapy.Item): # 国家 country=scrapy.Field() # IP地址 ip=scrapy.Field() # 端口号 port=scrapy.Field() # 服务器地址 address=scrapy.Field() # 是否匿名 anonymous=scrapy.Field() # 类型 type=scrapy.Field() # 速度 speed=scrapy.Field() # 连接时间 connect_time=scrapy.Field() # 存活时间 alive_time=scrapy.Field() # 验证时间 verify_time=scrapy.Field() xicidaili_spider.py # !/usr/bin/env python# -*- coding:utf-8 -*-import scrapyfrom myscrapy.items import XicidailiItemclass XicidailiSpider(scrapy.Spider): name = 'xicidaili' allowed_domains=['www.xicidaili.com'] # ……

网友NO.784465

Python3爬虫爬取英雄联盟高清桌面壁纸功能示例【基于Scrapy框架】

本文实例讲述了Python3爬虫爬取英雄联盟高清桌面壁纸功能。分享给大家供大家参考,具体如下: 使用Scrapy爬虫抓取英雄联盟高清桌面壁纸 源码地址: https://github.com/snowyme/loldesk 开始项目前需要安装python3和Scrapy,不会的自行百度,这里就不具体介绍了 首先,创建项目 scrapy startproject loldesk 生成项目的目录结构 首先需要定义抓取元素,在item.py中,我们这个项目用到了图片名和链接 import scrapyclass LoldeskItem(scrapy.Item): name = scrapy.Field() ImgUrl = scrapy.Field() pass 接下来在爬虫目录创建爬虫文件,并编写主要代码,loldesk.py import scrapyfrom loldesk.items import LoldeskItemclass loldeskpiderSpider(scrapy.Spider): name = "loldesk" allowed_domains = ["www.win4000.com"] # 抓取链接 start_urls = [ 'http://www.win4000.com/zt/lol.html' ] def parse(self, response): list = response.css(".Left_bar ul li") for img in list: imgurl = img.css("a::……

<
1
>

Copyright 2018-2020 xz577.com 码农之家

电子书资源由网友、会员提供上传,本站记录提供者的基本信息及资源来路

鸣谢: “ 码小辫 ” 公众号提供回调API服务、“ 脚本CDN ”提供网站加速(本站寻求更多赞助支持)

版权投诉 / 书籍推广 / 赞助:520161757@qq.com

上传资源(网友、会员均可提供)

查看最新会员资料及资源信息