初步认识网络爬虫

无论你是由于什么原因想做一个网络爬虫,首先做的第一件事情就是要了解它。

在了解网络爬虫之前一定要牢记以下4个要点,这是做网络爬虫的基础:

1.抓取

py的urllib不一定去用,但是要学,如果你还没用过的话。比较好的替代品有requests等第三方更人性化、成熟的库,如果pyer不了解各种库,那就白学了。抓取最基本就是拉网页回来。

如果深入做下去,你会发现要面对不同的网页要求,比如有认证的,不同文件格式、编码处理,各种奇怪的url合规化处理、重复抓取问题、cookies跟随问题、多线程多进程抓取、多节点抓取、抓取调度、资源压缩等一系列问题。

所以第一步就是拉网页回来,慢慢你会发现各种问题待你优化。

2.存储

抓回来一般会用一定策略存下来,而不是直接分析,个人觉得更好的架构应该是把分析和抓取分离,更加松散,每个环节出了问题能够隔离另外一个环节可能出现的问题,好排查也好更新发布。

那么存文件系统、SQLorNOSQL数据库、内存数据库,如何去存就是这个环节的重点。你可以选择存文件系统开始,然后以一定规则命名。

3.分析

对网页进行文本分析,提取链接也好,提取正文也好,总之看你的需求,但是一定要做的就是分析链接了。可以用你认为最快最优的办法,比如正则表达式。然后将分析后的结果应用与其他环节:)

4.展示

要是你做了一堆事情,一点展示输出都没有,如何展现价值?所以找到好的展示组件,去show出肌肉也是关键。
如果你为了做个站去写爬虫,抑或你要分析某个东西的数据,都不要忘了这个环节,更好地把结果展示出来给别人感受。

网络爬虫的定义

网络爬虫,即Web Spider,是一个很形象的名字。

把互联网比喻成一个蜘蛛网,那么Spider就是在网上爬来爬去的蜘蛛。

网络蜘蛛是通过网页的链接地址来寻找网页的。

从网站某一个页面(通常是首页)开始,读取网页的内容,找到在网页中的其它链接地址,然后通过这些链接地址寻找下一个网页,这样一直循环下去,直到把这个网站所有的网页都抓取完为止。如果把整个互联网当成一个网站,那么网络蜘蛛就可以用这个原理把互联网上所有的网页都抓取下来。

这样看来,网络爬虫就是一个爬行程序,一个抓取网页的程序。

网络爬虫的基本操作是抓取网页。那么如何才能随心所欲地获得自己想要的页面?

我们先从URL开始。

首先获取网页真正的url,简单的代码如下:

?


1

2

3

4

5

6

7

8

9

from urllib2 import Request, urlopen, URLError, HTTPError

#导入urllib2模块,且直接使用Request,不需要urllib2.Request(from... import...)  

old_url = http://rrurl.cn/b1UZuP #写入网页显示的地址

req = Request(old_url) 

response = urlopen(req)   

print ‘Old url :‘ + old_url 

print ‘Real url :‘ + response.geturl()

运行这串代码,会报HTTPError:403错误,表示站点拒绝网络爬虫访问。下面列出HTTP状态码:

HTTP状态码通常分为5种类型,分别以1~5五个数字开头,由3位整数组成:

------------------------------------------------------------------------------------------------
200:请求成功      处理方式:获得响应的内容,进行处理 
201:请求完成,结果是创建了新资源。新创建资源的URI可在响应的实体中得到    处理方式:爬虫中不会遇到 
202:请求被接受,但处理尚未完成    处理方式:阻塞等待 
204:服务器端已经实现了请求,但是没有返回新的信 息。如果客户是用户代理,则无须为此更新自身的文档视图。    处理方式:丢弃
300:该状态码不被HTTP/1.0的应用程序直接使用, 只是作为3XX类型回应的默认解释。存在多个可用的被请求资源。    处理方式:若程序中能够处理,则进行进一步处理,如果程序中不能处理,则丢弃
301:请求到的资源都会分配一个永久的URL,这样就可以在将来通过该URL来访问此资源    处理方式:重定向到分配的URL
302:请求到的资源在一个不同的URL处临时保存     处理方式:重定向到临时的URL 
304 请求的资源未更新     处理方式:丢弃 
400 非法请求     处理方式:丢弃 
401 未授权     处理方式:丢弃 
403 禁止     处理方式:丢弃 
404 没有找到     处理方式:丢弃 
5XX 回应代码以“5”开头的状态码表示服务器端发现自己出现错误,不能继续执行请求    处理方式:丢弃

这时候我们该怎么办呢?其实很简单,让爬虫伪装成正常IP访问网站就可以解决了。代码如下:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

---------------------------------------

   程序:twxs爬虫 

   版本:0.1 

   作者:贪玩小神 

   日期:2015-07-29 

   语言:Python 2.7  

   功能:输出站点真实的url 

---------------------------------------

import urllib

import urllib2

#导入urllib,urllib2模块,不推荐使用from ... import ...

old_url = http://www.zhubajie.com/wzkf/th1.html

user_agent = ‘Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6‘

#设置初始值old_url,user_agent

#User-Agent : 有些服务器或 Proxy 会通过该值来判断是否是浏览器发出的请求,这里设置User-Agent来伪装成浏览器

values = {‘name‘ : ‘Michael Foord‘,

          ‘location‘ : ‘Northampton‘,

          ‘language‘ : ‘Python‘ }

headers = { ‘User-Agent‘ : user_agent }

#初始化操作

data = urllib.urlencode(values)

req = urllib2.Request(old_url, data, headers=headers)

#客户端向服务器发送请求

response = urllib2.urlopen(req)

#服务器相应客户端的请求

print ‘Old url :‘ + old_url 

print ‘Real url :‘ + response.geturl()

时间: 2024-08-03 15:43:45

初步认识网络爬虫的相关文章

Python网络爬虫(一):初步认识网络爬虫

无论你是由于什么原因想做一个网络爬虫,首先做的第一件事情就是要了解它. 在了解网络爬虫之前一定要牢记以下4个要点,这是做网络爬虫的基础: 1.抓取 py的urllib不一定去用,但是要学,如果你还没用过的话.比较好的替代品有requests等第三方更人性化.成熟的库,如果pyer不了解各种库,那就白学了.抓取最基本就是拉网页回来. 如果深入做下去,你会发现要面对不同的网页要求,比如有认证的,不同文件格式.编码处理,各种奇怪的url合规化处理.重复抓取问题.cookies跟随问题.多线程多进程抓取

【搜索引擎Jediael开发笔记1】搜索引擎初步介绍及网络爬虫

详细可参考 (1)书箱:<这就是搜索引擎><自己动手写网络爬虫><解密搜索引擎打桩实践> (2)[搜索引擎基础知识1]搜索引擎的技术架构 (3)[搜索引擎基础知识2]网络爬虫的介绍 (一)搜索引擎的开发一般可分为以下三大部分 1.数据采集层:一般使用爬虫获取互联网的数据,重要的开源项目有Heritrxi 2.数据分析处理层:将从互联网上获取到的数据进行提取归类.分词.语义分析得出索引得内容,等待用户查询使用,重要的开源项目有Lucene 3.视图层:也用户的交互界面,如

网络爬虫初步:从访问网页到数据解析

前言: 网络爬虫这个东西看上去还是很神奇的.不过,如果你细想,或是有所研究就知道,其实爬虫并不那么高深.高深的是在我们的数据量很大的时候,就是当我们网络"图"的回环越来越多的时候,应该怎么去解决它. 本篇文章在这里只是起一个抛砖引玉的作用.本文主要是讲解了如何使用Java/Python访问网页并获得网页代码.Python模仿浏览器进行访问网页和使用Python进行数据解析.希望我们以本文开始,一步一步解开网络蜘蛛神秘的一面. 参考: 1.<自己动手写网络爬虫> 2.用pyt

网络爬虫:使用多线程爬取网页链接

前言: 经过前面两篇文章,你想大家应该已经知道网络爬虫是怎么一回事了.这篇文章会在之前做过的事情上做一些改进,以及说明之前的做法的不足之处. 思路分析: 1.逻辑结构图 上图中展示的就是我们网络爬虫中的整个逻辑思路(调用Python解析URL,这里仅仅作了简略的展示). 2.思路说明: 首先.我们来把之前思路梳理一下.之前我们採用的两个队列Queue来保存已经訪问过和待訪问的链接列表,并採用广度优先搜索进行递归訪问这些待訪问的链接地址.并且这里使用的是单线程操作. 在对数据库的操作中.我们加入了

Python网络爬虫实战-Scrapy视频教程 Python系统化项目实战课程 Scrapy技术课程

课程目录01.scrapy是什么.mp4Python实战-02.初步使用scrapy.mp4Python实战-03.scrapy的基本使用步骤.mp4Python实战-04.基本概念介绍1-scrapy命令行工具.mp4Python实战-05.本概念介绍2-scrapy的重要组件.mp4Python实战-06.基本概念介绍3-scrapy中的重要对象.mp4Python实战-07.scrapy内置服务介绍.mp4Python实战-08.抓取进阶-对"西刺"网站的抓取.mp4Python

什么是网络爬虫?有什么用?怎么爬?一篇文章带你领略python爬虫的魅力

网络爬虫也叫做网络机器人,可以代替人们自动地在互联网中进行数据信息的采集与整理.在大数据时代,信息的采集是一项重要的工作,如果单纯靠人力进行信息采集,不仅低效繁琐,搜集的成本也会提高. 此时,我们可以使用网络爬虫对数据信息进行自动采集,比如应用于搜索引擎中对站点进行爬取收录,应用于数据分析与挖掘中对数据进行采集,应用于金融分析中对金融数据进行采集,除此之外,还可以将网络爬虫应用于舆情监测与分析.目标客户数据的收集等各个领域. 当然,要学习网络爬虫开发,首先需要认识网络爬虫,本文将带领大家一起认识

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

众所周知,网络爬虫(或称为网络爬虫.网络蜘蛛.机器人)是搜索引擎最上游的一个模块,是负责搜索引擎内容索引的第一关. 很多人为了提高自己网站的索引量,都是去网上随便找一些爬虫工具来使用.但是很多人不知道,这些抓取网站的小爬虫是有各种各样的不同性格的. 常见的优秀网络爬虫有以下几种类型: 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级的数据,同时提供了全方面的选项,可以对