摘要:趁着春节,希望能写一个小小的网络爬虫框架。网页下载器接收,将页面内容下来。可以定义一个表,定义两个字段和缓存数据库网页下载器网页下载器就是更具下载网页内容等。常见的网页下载器有是官方的基础模块。
趁着春节,希望能写一个小小的网络爬虫框架。
先定一个小目标,希望能比较优雅地将某个网站上的所有图片爬下来。
暂时先将这个爬虫的名字叫做Squirrel,小松鼠吧。
爬虫其实是一种从互联网上获取信息,并且提取我们需要的信息并且储存的手段。
互联网就像一张网,这种网是由一个个url相互连接的。一个url往往是对应着一张网页(Page). 各个页面通过url链接成了一个网状结构。
那么我们从一个页面出发,分析其中的url,然后再去访问该url对应的页面;再分析其中的url,并访问。如此重复并可以爬遍所有的页面。
简单地捋了一下,我们如果需要实现一只爬虫,则需要实现如下几个功能模块:
url管理器
url管理器应该维护两个不重复的set。一个储存未爬过的url,一个储存已经爬过的url。如果我们要将一个url加入未爬过的url set,那么这个url必须都不在两组set中。
网页下载器
接收url,将页面内容下来。
网页解析器
接收页面内容,从中提取出结构化的数据和url。
储存器
储存结构化的数据。
下面我们一步一步来认识我们设置的几个模块需要实现什么功能。
url管理器url管理器主要需要维护两个集合:
已经抓取的url集合,我们叫做crawled_set
未抓取的url集合,我们叫做uncrawled_set
目的就是为了防止重复抓取和循环抓取。
我们来分解url管理器需要实现的功能:
判断一个url是否已经在容器中
判断uncrawled_set中是否为空。为空则停止爬取。
将一个url添加到容器的uncrawled_set中
将一个url从uncrawled_set移动到crawled_set中。
url管理器的实现方式有多种
将crawled_set和uncrawed_set存放在内存中。
Python支持set数据类型,可以建立两个set用来存放未爬和已爬url。
关系型数据库。
可以定义一个表,定义两个字段 url和is_crawled.
缓存数据库 redis
网页下载器网页下载器就是更具url下载网页内容(html等)。
常见的网页下载器有
-urllib2
urllib2是python官方的基础模块。
-request
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/38385.html
摘要:申明本系列文章借鉴了慕课网的课程,。慕课网是一个非常赞的学习网站。是下的一个模块,在中,被拆分成和实现一个最简单的下载器使用函数可以给服务器发送一个请求。该函数返回一个该返回的对象有三个额外的函数取得服务器返回的。默认没有的,请求方式为。 申明:本系列文章借鉴了慕课网的课程,http://www.imooc.com/learn/563。慕课网是一个非常赞的学习网站。 urllib2是p...
摘要:设置和处理事实上,并不是所有发起的请求都能得到服务器的回应。例如网络无链接连接不到服务器链接不存在请求的方法不对等情况都会造成抛出错误。上面说到的出错就会抛出。用于处理相关的错误。 urllib2的timeout timeout参数用于设置超时。我们在爬取一些响应较慢的网站的时候,需要设置一个比较长的超时时间。 response = urllib2.urlopen(request, t...
摘要:发送请求方不希望被跟踪。主要用来将伪装成一个正常的浏览器。该字典就是说是网络协议名称,是代理的。另外一般会明确指定资源存放的位置。意思是将现在提交的数据存放于下第篇。请求删除某一个资源。向服务器提交数据。 前一个教程我们涉及到了urllib2的一些高级应用。这一片文章我们来比较系统的介绍一下。 该篇教程参考了静觅的博文:http://cuiqingcai.com/954.html。写这...
摘要:相当于该用户的档案。上述的文字对机制描述的比较简单也并不一定完全正确。但是默认的并不支持。中供我们使用的是。创建需要闯入一个存放的容器。即过期的也保存。目前博主只知道链接后带的参数需要与相匹配。但是并不知道两者具体的关系。 很多网站的资源需要用户登录之后才能获取。我们一旦登录后再访问其他被保护的资源的时候,就不再需要再次输入账号、密码。那么网站是怎么办到的呢?一般来说,用户在登录之后,...
摘要:是什么呀是一个和不太一样的数据库。怀疑是同时联了四个集合的数据造成的。这本书的定位是和的应用,所以有意弱化了数据库的搭建维护和底层优化。所以本书可能不适合数据库工程师。 这篇文章没有代码,请放心阅读。 程序员最宝贵的东西是生命,生命属于程序员只有一次。一个程序员的一生应该这样度过:当她回首往事的时候,她不会因为搭建环境浪费时间而悔恨,也不会因为集群无法运行而羞耻。这样,在她开发的时候,...
阅读 919·2019-08-30 15:55
阅读 496·2019-08-26 13:56
阅读 2024·2019-08-26 12:23
阅读 3267·2019-08-26 10:29
阅读 574·2019-08-26 10:17
阅读 2805·2019-08-23 16:53
阅读 645·2019-08-23 15:55
阅读 2713·2019-08-23 14:25