如何写爬虫
来源:互联网 发布: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都是组合使用的。该组件应用场合为,动态页面解析,模拟登陆(无法准确构造登陆请求头时,可以考虑使用这种方式,很简单)。
- 如何写爬虫
- 如何自己写一个网络爬虫
- 如何使用Python写一个爬虫软件
- iOS程序员如何使用python写网路爬虫
- iOS程序员如何使用Python写网路爬虫
- 你是如何开始能写python爬虫?
- iOS程序员如何使用python写网路爬虫
- 知乎:你是如何开始能写python爬虫?
- 如何不写代码通过爬虫软件采集表格数据
- iOS程序员如何使用Python写网路爬虫
- 你是如何开始能写python爬虫?
- 写网络爬虫初探
- php写爬虫工具
- 自己动手写网络爬虫
- 自己动手写网络爬虫
- python 写爬虫
- 用python写爬虫
- 自己写的爬虫
- idea 快捷键
- java获取文件创建时间
- 单调队列优化dp
- javascript在线速查手册
- Covering
- 如何写爬虫
- 数据库视频-第一章
- 拥塞控制算法之Verus (2015 Sigcomm)
- 应用缓存获取和清理功能实现失败
- 最小费用最大流 模板
- Unity事件系统
- 十大心理效应
- NVIDIA Jetson TX2编译内核解决无法使用游戏手柄XBOX360的问题
- 51Nod-1181-质数中的质数(质数筛法)