爬虫的本质:基于Http协议请求目标地址,获取响应结果,分析并存储。
01
正式介绍
1.爬行动物基础知识
2.国内优秀开源爬虫框架的webmagic分析
02
爬行动物基金会
1.爬行动物的本性
爬虫的本质:基于Http协议请求目标地址,获取响应结果,分析并存储。
2.HTTP请求
请求头:封装http请求的基本信息,如用户代理、引用者、cookie、接受语言和请求方法(发布、获取)。
响应头:它封装了服务器返回的头信息,如内容语言内容语言、内容类型内容类型文本/html等。,服务器类型(tomcat、jetty、nginx等。),以及状态响应状态(如200、302、404等。).
响应:来自服务器的具体返回有各种类型,比如html页面、js代码、json字符串、css样式、stream等等。
3.分析
一般web基本都是返回html页面和json。
Xpath:解析能力强的xml路径语言。chrome和firefox有相应的工具来生成XPath语法,可以轻松解析标准html文件。
Json PATH: json PATH是Json解析的利器,非常类似于xpath语法,用非常简洁的表达式解析json字符串。
Css选择器:这里的css选择器有点类似于jquery,jquery通过元素的css样式来定位元素,著名的jsoup提供了丰富的css选择器
表达式
字符串分段
4.困难
分析请求
随着ajax的普及,很多网站采用动态呈现模式,请求不再简单的返回html模式,给抓取带来很大的困难。一般异步请求返回的json只能具体分析,解析成我们需要的数据格式。另一种是通过服务器内部转发来渲染页面,这是最难的。不是通过浏览器请求,而是在服务器跳转几次后将请求呈现给浏览器。此时,需要使用模拟器来模拟请求,如selenium。
网站限制
Cookie限制:很多网站登录后只能绕过过滤器才能访问,所以此时必须模拟cookie
用户代理:为了防止爬虫,有些网站必须是真正的浏览器才能访问。此时,可以模拟用户代理
请求加密:如果网站的请求被加密,就看不到请求的真实面目。这个时候只能猜测了。通常,加密将使用简单的编码,如base64、urlEncode等。如果太过复杂,只能穷尽式尝试。
Ip限制:有些网站会限制爬虫的ip,然后要么更改ip,要么伪装IP
曲线方案:很多网站都有对应pc的综合保护。有时候可以换个思路,请求app服务试试,通常会带来意想不到的收获。
攀登深度
网站通常的形式是一个页面超链接到另一个页面,理论上可以无限扩展。这时候必须设置一个爬行深度,不能无休止的爬行。
总结
实质上爬虫只做两件事:请求和解析结果,但是爬虫的开发非常困难。需要不断分析网站的请求,不断跟随目标网站升级程序,尝试解密破解目标网站的限制,并以此作为网络攻防。
03
网络魔术建筑分析
Webmagic是国产的优秀爬虫框架,使用方便,提供了多种选择器,如css选择器、xpath、regular等,并预留了大量扩展接口,如Pipeline、Scheduler、Downloader等。
下面重点分析Spider类的几个重要方法,包括锁的使用
1、添加网址
任务结束时间
队列为空,所有正在运行的请求完成,exitWhenComplete设置为true,则任务退出。此时必须注意,当页面请求太慢时,新解析的url将无法进入队列,然后任务退出将导致抓取不完整。一般将exitWhenComplete设置为false,但有时候启动两个爬虫时,必须在前一个爬虫完成后再运行下一个爬虫,这时就会出现问题。为了实现这个场景,您必须更改webmagic源代码
新请求的等待时间,默认为30s
如果调度器队列中有url,当任务被抛出线程池,页面下载成功时,执行pageProcessor的process方法,如果有流水线,执行流水线链中的process方法
需要注意的一点是,对于PageProcessor接口和Pipeline接口的实现,要特别注意线程安全,切记不要将元素插入到单实例集合对象中。
线程池可计数线程池的执行方法
有陷入僵局的风险。当threadAlive的数量大于或等于threadNum线程的数量时,reentrantLock.lock()应用锁,并循环条件. await()。同时,executorService.execute方法中threadAlive的减量Get也必须申请锁。此时双方等待资源造成僵局。这个小bug是可以调整的,不妨碍大局。到时候,官方会提到一个问题
总体来说,Webmagic是一个架构清晰、易于扩展、使用方便的好爬虫框架。
快乐来自分享。
本博客由作者原创,转载时请注明出处:
开源中国:https://my.oschina.net/u/1778239/blog/1588821
1.《webmagic 一篇文章看懂爬虫:优秀国产开源爬虫框架 WebMagic 剖析》援引自互联网,旨在传递更多网络信息知识,仅代表作者本人观点,与本网站无关,侵删请联系页脚下方联系方式。
2.《webmagic 一篇文章看懂爬虫:优秀国产开源爬虫框架 WebMagic 剖析》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
3.文章转载时请保留本站内容来源地址,https://www.lu-xu.com/guonei/1147080.html