联系方式

咨询热线:400-998-6158

点击此处免费预约试听课程»

常见问题
学习资讯
学习资讯

基本的爬虫工作原理

 基本的爬虫工作原理

基本的http抓取工具,scrapy

Bloom Filter: Bloom Filters by Example

如果需要大规模网页抓取,你需要学习分布式爬虫的概念。其实没那么玄乎,你只要学会怎样维护一个所有集群机器能够有效分享的分布式队列就好。最简单的实现是python-rq:

rq和Scrapy的结合:darkrho/scrapy-redis · GitHub

后续处理,网页析取(grangier/python-goose · GitHub),存储(Mongodb)

python爬虫学习心得

首先 爬虫是为了获取网页上数据。爬虫的大概可以分成四个模块:url队列,download下载部分,页面分析部分,数据管理部分。

爬虫的整个运行流程:

url队列:保存从页面上分析出来的url。

download下载部分:使用requests和urllib2,从internet上下载html文档。

spider分析部分:使用xpath和正则表达式对html进行解析,解析出数据和url两个部分。

item数据部分:将数据临时使用json或者普通字符串的形式保存在txt中,为以后清洗和永久保存提供了方便。

遇到的问题:

在引擎运行的时候,内存的控制极差同时使用率很大。运行一段时间后会被操作系统杀掉。主要的原因:在一个函数运行的时候,python是不会释放当前的资源的,只有当函数退出的时候资源完全释放。由于引擎的运行是被队列影响的。只要队列不为空,引擎就不会退出,资源就不会释放。

解决办法:

当引擎运行一段时间后,就退出。把队列内部中的url全部保存到一个临时txt中,当一段时间后引擎自动启动后去读取txt中的url同时加入到队列中。引擎再次启动运行。这是一个通过牺牲时间来换取空间的一般性的办法。

优化的地方:

队列中的冗余应该最小,因此重写了一个队列,队列中不存在重复的url。

download部分,使用了压缩技术,大大加快了html文档的传输速度(可能会加大服务器的负担)

在寻找内存问题的时候发现了一个不错的内存检测工具memory_profiler

这个只需要在函数上添加修饰则可以判断这个函数中每一行的运行时间。
学校联系方式

更多培训课程,学习资讯,课程优惠等学校信息,请进入 宁波国富如荷CDA数据分析 网站详细了解,免费咨询电话:400-998-6158

相关课程