再说网络爬虫

  现在做网络爬虫很容易,最常使用到的应该莫过于Python,类库丰富开发方便,简单。当然还有其他的,我没有接触的东西也很多,今天就说一下我两年前接触的一个项目中的很小一部分——模仿浏览器访问网站,大名网络机器人。

  其实前一段时间看过一篇文章《在浏览器中输入网址后都发生了什么》,这是一篇很好的文章,过程说的很清楚明白,网络爬虫其实就是最大限度的模仿了浏览器访问web服务器的过程,下面的图能说明简单的过程:

  但还是不完整,下面将详细描述一个Http请求的过程:

  • DNS  先获取URL中域名对应的IP地址
  • Socket connect 建立浏览器和web服务器之间的TCP连接
  • Send request 发送Http请求
  • Content Download web服务器返回应答

  根据域名获得IP地址的方法很多,你有可能返回的是很多IP地址,建议缓存起来,这有可能是存在一个一对多的关系。

  获得了IP地址之后发起TCP连接,建议在这个过程中使用不同的IP地址访问,因为大量访问同一个可能产生服务器内部错误5XX等异常。温馨提示Http的默认端口是80,https的默认端口是443。完成连接的过程只是TCP的三次握手。

  发送Http请求就是拼接的报文发送给web服务器,但是拼接报文涉及的东西很复杂,例如:

"GET %s HTTP/1.1\r\n"

"Host: %s\r\n"

"Connection: keep-alive\r\n"

"Cache-Control: max-age=0\r\n"

"Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*\r\n"

"User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0)Gecko/20100101 Firefox/20.0\r\n"

"Accept-Encoding: gzip,deflate\r\n"

"Accept-Language: zh-CN,zh\r\n"

"Accept-Charset: GBK,utf-8\r\n"

"Referer: http://%s/\r\n\r\n"

这些"GET %s HTTP/1.1\r\n"的含义:GET方式的请求,%s代表网页的绝对路径,HTTP/1.1说明的是Http协议的版本号。

"Host: %s\r\n"的含义:主机名称。

"Connection: keep-alive\r\n"建立连接之后的连接方式

"Cache-Control: max-age=0\r\n"的含义:缓存控制的最长时间

"Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*\r\n"的含义:接受的文本类型

"User-Agent: Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:20.0)Gecko/20100101 Firefox/20.0\r\n"的含义:浏览器的类型,操作系统,等

"Accept-Encoding: gzip,deflate\r\n"的含义:浏览器接受的加密方式

"Accept-Language: zh-CN,zh\r\n"的含义:浏览器接受的语言

"Accept-Charset: GBK,utf-8\r\n"的含义:编码格式

"Referer: http://%s/\r\n\r\n"的含义:从哪个页面跳转过来

  如果是模拟登录应该会涉及cookie的保存和发送的处理,关于cookie放在下一篇中讨论。

  终于到了web服务器响应的过程了,这的很不容易的,先返回的是响应的状态码、cookie、传输方式、加密方式等信息,这是报文的头部。

  需要首先解析响应报文才能知道后续的流程要如何处理,根据状态码判断应答是否正确,根据传输方式判断内容的接收方式,根据加密方式判断接收后的报文是否需要解密等等。状态码常见的有200、3XX、4XX、5XX。含义各不相同。200代表正常、3XX代表跳转、4XX代表不存在、5XX代表服务器内部错误。传输方式分为chunked和一般,处理方式不同。加密方式:gzip是一种公用的格式。

  当爬虫正确的拿到报文之后,通信完成,关闭连接,通过TCP的四次挥手完成。之后需要筛选URL和内容,将URL保存以便访问,将内容按需要处理。这两种仅涉及字符串的处理,方式很多没必要仔细的说明。

时间: 2024-08-11 01:36:09

再说网络爬虫的相关文章

简谈-网络爬虫的几种常见类型

众所周知,网络爬虫(或称为网络爬虫.网络蜘蛛.机器人)是搜索引擎最上游的一个模块,是负责搜索引擎内容索引的第一关. 很多人为了提高自己网站的索引量,都是去网上随便找一些爬虫工具来使用.但是很多人不知道,这些抓取网站的小爬虫是有各种各样的不同性格的. 常见的优秀网络爬虫有以下几种类型: 1.批量型网络爬虫:限制抓取的属性,包括抓取范围.特定目标.限制抓取时间.限制数据量以及限制抓取页面,总之明显的特征就是受限: 2.增量型网络爬虫(通用爬虫):与前者相反,没有固定的限制,无休无止直到抓完所有数据.

[No000090]微信公众号网络爬虫接口分析1

一直想做个公众号的网络爬虫,网上的好多接口都依赖于"瘦狗",不过微信接口一直在变,现在"瘦狗"也只允许查看10条历史记录,所以今天趁着下雨,研究了一下apk内部的东西,但是怕微信又改,我透漏的不能太多,有兴趣可以私下交流. 从微信上复制出来的url:https://mp.weixin.qq.com/mp/getmasssendmsg?__biz=MzI4OTA5MDgxNw==#wechat_webview_type=1&wechat_redirect 用浏

基于Nutch+Hadoop+Hbase+ElasticSearch的网络爬虫及搜索引擎

网络爬虫架构在Nutch+Hadoop之上,是一个典型的分布式离线批量处理架构,有非常优异的吞吐量和抓取性能并提供了大量的配置定制选项.由于网络爬虫只负责网络资源的抓取,所以,需要一个分布式搜索引擎,用来对网络爬虫抓取到的网络资源进行实时的索引和搜索. 搜 索引擎架构在ElasticSearch之上,是一个典型的分布式在线实时交互查询架构,无单点故障,高伸缩.高可用.对大量信息的索引与搜索都可以在近 乎实时的情况下完成,能够快速实时搜索数十亿的文件以及PB级的数据,同时提供了全方面的选项,可以对

网络爬虫技术入门_Python基础与爬虫技术

Python基础与爬虫技术  课程学习地址:http://www.xuetuwuyou.com/course/195 课程出自学途无忧网:http://www.xuetuwuyou.com 课程简介 本作为一种便捷地收集网上信息并从中抽取出可用信息的方式,网络爬虫技术变得越来越有用.使用Python这样的简单编程语言,你可以使用少量编程技能就可以爬取复杂的网站. <Python 基础与爬虫技术>讲解了从静态页面爬取数据的方法以及使用缓存来管理服务器负载的方法.此外,本课程还介绍了如何使用AJA

网络爬虫小案例_2017/3/10

今晚,了解了一下网络爬虫,那么什么是网络爬虫呢? 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常被称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本,已被广泛应用于互联网领域.搜索引擎使用网络爬虫抓取Web网页.文档甚至图片.音频.视频等资源,通过相应的索引技术组织这些信息,提供给搜索用户进行查询.网络爬虫也为中小站点的推广提供了有效的途径,网站针对搜索引擎爬虫的优化曾风靡一时. 网络爬虫的基本工作流程如下:     1.首先选取一部分精心挑选的种子U

使用网络爬虫的一丝心得

因为参与了创新计划,所以懵懵懂懂的接触到了网络爬虫. 爬数据使用工具,因此了解到Python.asp.net等可以用来抓数据. 想想在学习.net的时候根本没有想到会使用在这个上面--书本上的知识都是死的,那学习的基础知识只能通过不断的拓展使用领域才能在更好的得到深化.应用! 进入一个陌生的领域,从入门到精通的路真的是需要用汗水积累起来的--没有真正的天才,只有自感聪明的蠢材.(自我审视) 有句话说的特别的好:"世界上两种聪明的人:一种是从来不认为自己聪明的聪明人:而另一种是自以为自己很聪明的'

网络爬虫之selenium(综述)

   现阶段网络爬虫的工具主要是有scrapy.selenium(第二版)等.总的来说各有好处,scrapy最大 的好处是爬取的速度快而selenium的好处是能爬去的网站种类多.详细点的解释是:scrapy在爬取网页时不 用点击开页面(selenium似乎需要页面全部加载完才可以查找定位),selenium可以爬取动态网页和静态网页 (模拟浏器操作)而scrapy可以很顺利的爬取静态网页(但是很难或者不能爬取动态网页).由于爬取知网 的需要,本人学习了selenium,现分享一下个人的心得(如

下载大数据实战课程第一季Python基础和网络爬虫数据分析

python语言近年来越来越被程序相关人员喜欢和使用,因为其不仅简单容易学习和掌握,而且还有丰富的第三方程序库和相应完善的管理工具:从命令行脚本程序到gui程序,从B/S到C/S,从图形技术到科学计算,软件开发到自动化测试,从云计算到虚拟化,所有这些领域都有python的身影:python已经深入到程序开发的各个领域,并且会越来越多的人学习和使用. 大数据实战课程第一季Python基础和网络爬虫数据分析,刚刚入手,转一注册文件,视频的确不错,可以先下载看看:链接:http://pan.baidu

网络爬虫: 从allitebooks.com抓取书籍信息并从amazon.com抓取价格(2): 抓取allitebooks.com书籍信息及ISBN码

这一篇首先从allitebooks.com里抓取书籍列表的书籍信息和每本书对应的ISBN码. 一.分析需求和网站结构 allitebooks.com这个网站的结构很简单,分页+书籍列表+书籍详情页. 要想得到书籍的详细信息和ISBN码,我们需要遍历所有的页码,进入到书籍列表,然后从书籍列表进入到每本书的详情页里,这样就能够抓取详情信息和ISBN码了. 二.从分页里遍历每一页书籍列表 通过查看分页功能的HTML代码,通过class="current"可以定位当前页码所在span标签,此s

网络爬虫

网络爬虫 概述 这是一个网络爬虫学习的技术分享,主要通过一些实际的案例对爬虫的原理进行分析,达到对爬虫有个基本的认识,并且能够根据自己的需要爬到想要的数据.有了数据后可以做数据分析或者通过其他方式重新结构化展示. 什么是网络爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本.另外一些不常使用的名字还有蚂蚁.自动索引.模拟程序或者蠕虫.via 百度百科网络爬虫网络蜘蛛(Web spider)也叫网络爬