Skip to content

alwaysR9/webPageCollector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 

Repository files navigation

高效的python爬虫组件 —— webPageCollector

适用场景

当有大量链接需要爬取时,爬取链接的任务可以交给webPageCollector,它可以高效的完成爬取任务,并保证爬到的数据包含完整的网页内容,利用它可以代替大量调用urlopen函数的情况。webPageCollector特别适合爬取单一大型网站(例如爬取美团上所有的店家信息),程序中对此情况的域名解析进行了优化。使用webPageCollector构造的高效美团爬虫

与urlopen函数时间效率对比

  • 实验数据:3154个美团店家主页地址
  • 实验环境:网速4Mb/s
  • 实验一:webPageCollector
    • 成功爬取3135个店家主页,漏爬率0.6%
    • 耗时868秒
  • 实验二:单线程调用urlopen函数
    • 成功爬取3140个店家主页,漏爬率0.44%
    • 耗时4614秒
  • 实验结果:
    • 时间效率上,使用webPageCollector是使用单线程调用urlopen函数的 5.31倍
    • 漏爬率,使用webPageCollector比使用单线程调用urlopen函数高 0.16%

运行环境

在 Linux 3.13 内核上可正常运行
Linux 2.6 或以上版本的内核应该也可以运行

运行示例

from webPageCollector import WebPageCollector

# 加载800个美团店家的URL地址
urls = open("urls.txt", "rb").read().strip().split()

# 创建爬虫
crawler = WebPageCollector()
# 设置URL
crawler.set_urls(urls)
# 开始爬取
crawler.start()

# 接收并输出爬取到的数据
while True:
	item = crawler.pop()
	# item为None表是爬取结束
	if item == None:
		break
	
	(url, data) = item
	print url
	print data

注意!:
1) webPageCollector只负责请求并完整接收服务器数据,对数据的解析需要用户完成
2) webPageCollector不会对URL进行去重,对URL去重是用户的职责

webPageCollector支持

HTTP 1.1 协议GET请求
HTTP 301HTTP 302重定向

webPageCollector不支持

Https协议
的网页

联系方式

[email protected] test

About

高效的python爬虫组件

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages