如何写爬虫

来源:互联网 发布:vb是什么意思啊 编辑:程序博客网 时间:2024/05/16 11:41

1.爬虫定义:
通过自动化程序模拟客户端访问服务器的过程,进行页面数据采集。

2.爬虫的作用:
利用程序自动收集感兴趣的变化的数据,可以对信息进行分析和监控

3.爬虫的原理:
使用网络通信协议来模拟客户端访问服务器的过程
网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前页面上抽取新的URL放入队列,直到满足系统的一定停止条件。聚焦爬虫的工作流程较为复杂,需要根据一定的网页分析算法过滤与主题无关的链接,保留有用的链接并将其放入等待抓取的URL队列。然后,它将根据一定的搜索策略从队列中选择下一步要抓取的网页URL,并重复上述过程,直到达到系统的某一条件时停止

4.如何写爬虫:

1)理解http协议的含义以及格式:
该协议定义了超文本通信的具体格式,即客户端和服务器进行通信的格式。
http协议分为request,response两个部分,爬虫主要构造request请求以及接收服务器响应的response报文。
2)解析response报文
response报文一般是以类html格式出现,所以我们需要对文档进行解析,必须要了解文档解析的技术有哪些,如java中的Jsoup以及python中的lxml,本质上来说都是基于DOM树的解析。熟悉html以及xml的人应该知道他们都是树模型。

5.写爬虫需注意的几点问题

1)构造Http header中的User-Agent
这个参数比较重要。因为这个参数标识着客户端使用的浏览器版本,煎蛋网之后就是通过这个来识别出爬虫的。所有我们可以使用任意主流的浏览器版本的信息即可,在大数据量抓取时,最好可以间隔一段时间更换一次User-Agent。

2)控制抓取速度
每个网站根目录下都有robots.txt协议,用来控制对本站资源的访问。为了不干扰网站的正常运维,我们可以将抓取间隔变长。一旦抓取速度过快,很容易被网站的反爬虫技术识别出来,并封锁爬虫IP,所以必须控制速度。

3)模拟登陆问题
有些网站是必须模拟登陆才能访问,所以这里需要模拟登陆,其实就是模拟客户端向服务器提交表单的过程。我们需要知道客户端向服务器提交了哪些参数?这整个交互过程,我们可以通过浏览器来进行调试,如Chrome中我们需要按下F12打开调试,然后点击Network按钮,最后我们在页面中输入登陆所需要的信息。注意观察完成了哪些请求,请求中带有的参数。

4)动态页面问题
页面中含有js,ajax等元素或者需要点击事件才能获取数据时,我们无法通过程序直接对页面进行解析,因为我们没有js引擎,而浏览器正好具备。selenium是一个利用浏览器进行解析页面,并返回页面数据的工具。phantomjs是一个无头浏览器,它也可以实现以上功能。最大的好处就是不需要浏览器。一般selenium+phantomjs都是组合使用的。该组件应用场合为,动态页面解析,模拟登陆(无法准确构造登陆请求头时,可以考虑使用这种方式,很简单)。