python爬虫编写-Python编写知乎爬虫实践

本文介绍了爬虫的基本工作流程,包括从种子URL开始,解析DNS,下载网页,存储数据,以及使用深度优先和广度优先策略进行抓取。在Python中实现爬虫可以使用requests、BloomFilter、XPath等工具。然而,实际爬取大规模网站时,如知乎或Google,需要考虑反爬虫策略和分布式爬虫技术。提供的伪代码展示了简单的爬虫实现,但应对大量数据时可能效率低下。
摘要由CSDN通过智能技术生成

226fa2033b85c6832a65c4ace66c9eb8.jpg-wh_651x-s_215126882.jpg

爬虫的根本流程

cc142941eafcad43c79f3602752806ad.jpg

收集爬虫的根本工作流程如下:起首拔取一部分精心遴选的种子URL

将种子URL参加义务队列

大年夜待抓取URL队列中掏出待抓取的URL,解析DNS,并且获得主机的ip,并将URL对应的网页下载下来,存储进已下载网页库中。此外,将这些URL放进已抓取URL队列。

分析已抓取URL队列中的URL,分析个中的其他URL,并且将URL放入待抓取URL队列,大年夜而进入下一?轮回。

解析下载下来的网页,将须要的数据解析出来。

数据持久话,保存至数据库中。

爬虫的抓取策略

在爬虫体系中,待抓取URL队列是很重要的一部分。待抓取URL队列中的URL以什么样的次序分列也是一个很重要的问题,因为这涉及到先抓取那个页面,后抓取哪个页面。而决定则些URL分列次序的办法,叫做抓取策略。下面重点介绍几种常见的抓取策略:

76efd364f5ee04c18b85ec158d86c24a.jpg深度优先策略(DFS)

后续应用日记模块记录爬取日记和缺点日记

分布式义务队列和分布式爬虫

深度优先策略是指爬虫大年夜某个URL开端,一个链接一个链接的爬取下去,直到处理完了某个链接地点的所有线路,才切换到其它的线路。

此时抓取次序为:A -> B -> C -> D -> E -> F -> G -> H -> I -> J广度优先策略(BFS)

宽度优先遍历策略的根本思路是,将新下载网页中发明的链接直接插入待抓取URL队列的末尾。也就是指收集爬虫会先抓取肇端网页中链接的所有网页,然后再选择个中的一个链接网页,持续抓取在此网页中链接的所有网页。

懂得了爬虫的工作流程和爬取策略后,就可以着手实现一个爬虫了!那么在python里怎么实现呢?

技巧栈requests 人道化的请求发送

Bloom Filter 布隆过滤器,用于判重

XPath 解析HTML内容

murmurhash

Anti crawler strategy 反爬虫策略

MySQL 用户数据存储

根本实现

下面是一个伪代码import Queue

initial_page = "https://www.zhihu.com/people/gaoming623"

url_queue = Queue.Queue()

seen = set()

seen.insert(initial_page)

url_queue.put(initial_page)

while(True): #一向进行

if url_queue.size()>0:

current_url = url_queue.get() #拿出队例中第一个的url

store(current_url) #把这个url代表的网页存储好

fornext_urlinextract_urls(current_url): #提取把这个url里链向的url

if next_url notinseen:

seen.put(next_url)

url_queue.put(next_url)

else:

break

如不雅你直接加工一下膳绫擎的代码直接运行的话,你须要很长的时光才能糯估消个知乎用户的信息,毕竟知乎有6000万月活泼用户。更别说Google如许的搜刮引擎须要趴下全网的内容了。那么问题涌如今哪里?

推荐阅读

前菜在我们应用Python的过程, 很多时刻会用到 + 运算, 例如:先来看看字节码:a = 1 + 2 print a # 输出 3 不但在加法中应用, 在字符串的拼接也同样发挥这重要的感化, 例如:a = 'abc' +>>>详细阅读

地址:http://www.17bianji.com/lsqh/35819.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值