1. 相关协议和规范
网络爬虫是一种客户端技术,不能离开客户端独立工作,服务端则是由众多互联网上的Web服务器组成
客户端与服务端:
客户端是在互联网上充当指令发出者的角色,而服务端则是响应方。一般我们访问网站,都是客户端发出请求,然后对方服务器端响应,结果就是返回了页面路径给我们,我们再根据路径看到了网页。
-
1.1 TCP协议
TCP协议是网咯爬虫的底层协议,爬虫与Web建立连接,传输数据都是以其为基础。技术上主要体现为Socket编程技术(详见我的博客:Java网络编程) -
1.2 HTTP协议
HTTP协议是一种应用层协议,用于超文本传输,它规定了在TCP连接上向Web服务器请求页面以及服务器向爬虫响应页面数据的方式和数据格式。爬虫对HTTP协议的依赖比较大 -
1.3 Robots协议
也被成为爬虫协议,该协议指明了哪些页面可不可以抓取,以及抓取动作的时间,延时,频次等。协议详细介绍:https://www.robotstxt.org/robotstxt.html -
1.4 Cookie规范
Cookie规范是指默写网站为了辨别用户身份,进行Session跟踪并存储在用户本地设备上的数据。通过Cookie可以将用户在服务端的相关信息保存在本地,这些信息通常是用户名,口令,地区标识等,这些信息由浏览器自动读出,通过HTTP协议发送到服务端 -
1.5 网页编码规范
目前常用的网页编码格式有:unicode、utf-8、gbk等,爬虫在解析页面内容时就需要识别页面的编码格式 -
1.6 HTML语言规范
它是一种用来描述网页的语言,规定了页面的格式,字体,表格等多种元素
2. Web信息提取技术
对于网络爬虫果集页面数据而言,最终的目标是获得页面中的内容。因此如何从HTML编码的内容提取所需要的信息是爬虫采集Web数据需要解决的问题.此外, 山于爬虫是依赖于超链接米获得更多的爬行页面, 所以从Web页面中提取超链接也是Web信息提取的技术问题。
总的来说, Web信息据取包含两大部分, 即Web页面中的超链接提取和Web内容提取, 对于前者而言, 超链接在Web页面中具有相对比较有限的标签特征, 因此通常可以使用简单的正则表达式之类的方法来提取,对于页面中正文内容的提取则要复杂一些,由于不同页面的正文位置并不相同,并且网站也会经常改版,所以为了爬虫解析Web页面的程序能够具备一定的灵活性和适应性, 需要引入一定的技术手段来减轻这种变化所需要的程序维护工作。其常用的方法是将Web页面转换成为一棵树,然后按照一定的规则从树中获得所需要的信息。
目前.在Python中已经有很多种开源库可以用来实现基于树结构的信息提取,川且有灵活的策略可以配置, 这些开源库主要有html.parser、Ixml、html5lib、Beautiful Soup以及PyQuery等, 这些库各有各的优缺点, 开发人员在实际应用中可以选择合适的方法。
一些高级的方法试图使爬虫提取Web信息有更好的适应能力, 一种途径是引人统计思想,对页面中正文部分的各种特征进行统计,在大量样本特征计算的基础上设置合适的特征值范围,从而为自动提取提供依据。