每月代理IP知识
浅谈爬虫框架需要的组件
更新:2021/1/14 11:41:56 浏览:1000次
爬虫工作中,设计框架的目的就是将爬虫流程统一化,将通用的功能进行抽象,减少重复工作。设计网络爬虫框架需要哪些组件呢?今天蝶鸟IP一姐和大家聊一聊。
爬虫框架要处理很多URL,我们需要设计一个队列,存储所有要处理的URL,先进先出的数据结构非常符合这个需求。将所有要下载的URL存储在待处理队列中,每次下载会取出一个,队列中就会少一个。我们知道有些URL的下载会有反爬虫策略,所以针对这些请求需要做一些特殊的设置,进而可以对URL进行封装抽出 Request。
页面下载器如果没有,用户就要编写网络请求的处理代码,这无疑对每个 URL 都是相同的动作。所以在框架设计中我们直接加入它就好了,至于使用什么库来进行下载都是可以的,你可以用 httpclient ,也可以用okhttp。
爬虫调度器,调度器和我们在开发 web 应用中的控制器是一个类似的概念,它用于在下载器、解析器之间做流转处理。解析器可以解析到更多的 URL 发送给调度器,调度器再次传输给下载器,这样就会让各个组件有条不紊地进行工作。
网页解析器我们知道当一个页面下载完成后就是一段 HTML 的 DOM 字符串表示,但还需要提取出真正需要的数据。以前的做法是通过String的API 或者正则表达式的方式在DOM 中搜寻,这样是很麻烦的,框架应该提供一种合理、常用、方便的方式来帮助用户完成提取数据。常用的手段是通过xpath或者css选择器从DOM中进行提取,而且学习这项技能在几乎所有的爬虫框架中都是适用的。
数据处理,普通的爬虫程序中是把网页解析器和数据处理器合在一起的,解析到数据后马上处理。在一个标准化的爬虫程序中,他们应该是各司其职的,我们先通过解析器将需要的数据解析出来,封装成对象,然后传递给数据处理器,处理器接收到数据后可能是存储到数据库,也可能通过接口发送给别人。
蝶鸟代理IP平台专业提供国内优质短效代理IP,稳定高匿,支持Http(s)/Socks5协议,拥有3000多个节点,覆盖全国200多个城市,欢迎各位朋友前来测试和选购。
电话:13214265351
QQ:2873763815