当前位置:雷电ip >
代理IP教你设计爬虫框架
发表日期:2020-12-27
找到ip代理软件,搭建好专用的爬虫代理IP池之后,我们就可以开展爬虫工作了。那么,爬虫框架要什么搭建呢?在设计爬虫框架的时候,我们又需要去考虑什么,下面ET代理给大家带来一款轻量级的爬虫框架设计,大家可以从中参考它的设计思路,获得灵感。
那么设计爬虫框架由哪些组成呢?
1、网页下载器
如果没有网页下载器,用户就要编写网络请求的处理代码,这无疑对每个URL都是相同的动作。 所以在框架设计中我们直接加入它就好了,至于使用什么库来进行下载都是可以的,你可以用 httpclient 也可以用 okhttp。
2、URL管理器
代理ip爬虫框架要处理很多的URL,我们需要设计一个队列存储所有要处理的URL,这种先进先出的数据结构非常符合这个需求。 将所有要下载的URL存储在待处理队列中,每次下载会取出一个,队列中就会少一个。我们知道有些URL的下载会有反爬虫策略, 所以针对这些请求需要做一些特殊的设置,进而可以对URL进行封装抽出 Request。
3、网页解析器
我们知道当一个页面下载完成后就是一段 HTML 的 DOM 字符串表示,但还需要提取出真正需要的数据, 以前的做法是通过 String 的 API 或者正则表达式的方式在 DOM 中搜寻,这样是很麻烦的,框架 应该提供一种合理、常用、方便的方式来帮助用户完成提取数据这件事儿。常用的手段是通过 xpath 或者 css 选择器从 DOM 中进行提取,而且学习这项技能在几乎所有的爬虫框架中都是适用的。
4、爬虫调度器
调度器和我们在开发 web 应用中的控制器是一个类似的概念,它用于在下载器、解析器之间做流转处理。 解析器可以解析到更多的URL发送给调度器,调度器再次的传输给下载器,这样就会让各个组件有条不紊的进行工作。
5、数据处理器
普通的代理ip爬虫程序中是把网页解析器和数据处理器合在一起的,解析到数据后马上处理。在一个标准化的爬虫程序中,他们应该是各司其职的,我们先通过解析器将需要的数据解析出来,可能是封装成对象。 然后传递给数据处理器。
整个流程和 Scrapy 是一致的,但简化了一些操作:
引擎(Engine): 用来处理整个系统的数据流处理, 触发事务(框架核心)
调度器(Scheduler): 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
下载器(Downloader): 用于下载网页内容, 并将网页内容返回给调度器
爬虫(Spiders): 代理ip爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。 用户也可以从中提取出链接,让框架继续抓取下一个页面
项目管道(Pipeline): 负责处理代理ip爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。 当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
执行流程图:
首先,引擎从调度器中取出一个链接(URL)用于接下来的抓取
引擎把URL封装成一个请求(Request)传给下载器,下载器把资源下载下来,并封装成应答包(Response)
然后,爬虫解析Response
若是解析出实体(Item),则交给实体管道进行进一步的处理。
若是解析出的是链接(URL),则把URL交给Scheduler等待抓取
因此,轻量级爬虫具有以下基本特性
易于定制: 很多站点的下载频率、浏览器要求是不同的,爬虫框架需要提供此处扩展配置
多线程下载: 当CPU核数多的时候多线程下载可以更快完成任务
支持 XPath 和 CSS 选择器解析
那么设计爬虫框架由哪些组成呢?
1、网页下载器
如果没有网页下载器,用户就要编写网络请求的处理代码,这无疑对每个URL都是相同的动作。 所以在框架设计中我们直接加入它就好了,至于使用什么库来进行下载都是可以的,你可以用 httpclient 也可以用 okhttp。
2、URL管理器
代理ip爬虫框架要处理很多的URL,我们需要设计一个队列存储所有要处理的URL,这种先进先出的数据结构非常符合这个需求。 将所有要下载的URL存储在待处理队列中,每次下载会取出一个,队列中就会少一个。我们知道有些URL的下载会有反爬虫策略, 所以针对这些请求需要做一些特殊的设置,进而可以对URL进行封装抽出 Request。
3、网页解析器
我们知道当一个页面下载完成后就是一段 HTML 的 DOM 字符串表示,但还需要提取出真正需要的数据, 以前的做法是通过 String 的 API 或者正则表达式的方式在 DOM 中搜寻,这样是很麻烦的,框架 应该提供一种合理、常用、方便的方式来帮助用户完成提取数据这件事儿。常用的手段是通过 xpath 或者 css 选择器从 DOM 中进行提取,而且学习这项技能在几乎所有的爬虫框架中都是适用的。
4、爬虫调度器
调度器和我们在开发 web 应用中的控制器是一个类似的概念,它用于在下载器、解析器之间做流转处理。 解析器可以解析到更多的URL发送给调度器,调度器再次的传输给下载器,这样就会让各个组件有条不紊的进行工作。
5、数据处理器
普通的代理ip爬虫程序中是把网页解析器和数据处理器合在一起的,解析到数据后马上处理。在一个标准化的爬虫程序中,他们应该是各司其职的,我们先通过解析器将需要的数据解析出来,可能是封装成对象。 然后传递给数据处理器。
整个流程和 Scrapy 是一致的,但简化了一些操作:
引擎(Engine): 用来处理整个系统的数据流处理, 触发事务(框架核心)
调度器(Scheduler): 用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个URL(抓取网页的网址或者说是链接)的优先队列, 由它来决定下一个要抓取的网址是什么, 同时去除重复的网址
下载器(Downloader): 用于下载网页内容, 并将网页内容返回给调度器
爬虫(Spiders): 代理ip爬虫是主要干活的, 用于从特定的网页中提取自己需要的信息, 即所谓的实体(Item)。 用户也可以从中提取出链接,让框架继续抓取下一个页面
项目管道(Pipeline): 负责处理代理ip爬虫从网页中抽取的实体,主要的功能是持久化实体、验证实体的有效性、清除不需要的信息。 当页面被爬虫解析后,将被发送到项目管道,并经过几个特定的次序处理数据。
执行流程图:
首先,引擎从调度器中取出一个链接(URL)用于接下来的抓取
引擎把URL封装成一个请求(Request)传给下载器,下载器把资源下载下来,并封装成应答包(Response)
然后,爬虫解析Response
若是解析出实体(Item),则交给实体管道进行进一步的处理。
若是解析出的是链接(URL),则把URL交给Scheduler等待抓取
因此,轻量级爬虫具有以下基本特性
易于定制: 很多站点的下载频率、浏览器要求是不同的,爬虫框架需要提供此处扩展配置
多线程下载: 当CPU核数多的时候多线程下载可以更快完成任务
支持 XPath 和 CSS 选择器解析
最新文章
-
01代理IP教你设计爬虫框架
-
02测试代理IP有效性的方法
-
03代理ip经常要变化怎么办?
-
04喜欢用代理ip上网的原因
-
05选择动态换ip软件
-
06代理服务器ip的网络使用
-
07如何挑对换ip软件?
-
08网络时代的ip代理
-
09如何提高代理ip的效率?
-
10代理ip服务器使用的重要性
推荐阅读
-
01代理IP教你设计爬虫框架
-
02测试代理IP有效性的方法
-
03代理ip经常要变化怎么办?
-
04喜欢用代理ip上网的原因
-
05选择动态换ip软件
-
06代理服务器ip的网络使用
-
07如何挑对换ip软件?
-
08网络时代的ip代理
-
09如何提高代理ip的效率?
-
10代理ip服务器使用的重要性