Python实现大规模爬虫的一些套路

本文探讨了Python在舆情方向爬虫的实现,包括网页文本智能提取,分布式爬虫,去重策略,自动化渲染技术和消息队列的应用。重点介绍了GNE库用于智能提取文本,以及如何利用Redis进行去重。分布式爬虫中,文章讨论了资源管理和Bloom Filter降低内存消耗。自动化渲染技术如Selenium用于处理浏览器渲染的内容,消息队列则在爬虫中起到了资源调度的作用。
摘要由CSDN通过智能技术生成

我们身边接触最频繁、同时也是最大的爬虫莫过于几大搜索引擎。但是搜索引擎的爬取方式和我们爬虫工程师接触的方式差异比较大,没有太大的参考价值,我们今天要讲的是舆情方向的爬虫(架构以及关键技术原理),主要涉及:

1.网页文本智能提取;
2.分布式爬虫;
3.爬虫 DATA/URL 去重;
4.爬虫部署;
5.分布式爬虫调度;
6.自动化渲染技术;
7.消息队列在爬虫领域的应用;
8.各种各样形式的反爬虫;

一、网页文本智能提取

舆情其实就是舆论情况,要掌握舆情,那么就必须掌握足够多的内容资讯。除了一些开放了商业接口的大型内容/社交类平台(例如微博)之外,其他都需要依靠爬虫去采集。因此,舆情方向的爬虫工程师需要面对的是千千万万个内容和结构都不同的站点。我们用一个图来表示他们面对的问题:

image

没错,他们的采集器必须要能够适配千千万万个站点的结构,从风格迥异的 HTML 文本中提取出主体内容——标题、正文、发布时间和作者。

如果是你,你会用什么样的设计来满足业务需求呢?

曾经我也设想过这样的问题,在技术群里也看到有群友提出类似的问题,但是很难得到满意的答案。有的人说:

1.用归类法,相似的内容归类到一起,然后给一类内容配置提取规则;
2.用正则,提取指定标签中的内容;
3.用深度学习,NLP 语义分析出哪里是有意义的内容,提取出来;
4.用计算机视觉,让人去点击,然后按照页面相似度分类提取(其实就是归类法的自动化版本);
5.用算法,计算出文本的密度,然后提取;

总之各种各样的想法层出不穷,但是最后都没有听到实际应用的消息。目前来说,大部分公司使用的都是人工配置 XPATH 规则的方式,采集的时候通过网址来匹配对应的提取规则,然后调用规则来实现多站点的爬取。这种方法很有效,而且在企业中应用已久,比较稳定,但缺点也显而易见——费时间、费人工、费钱!

偶有一天,我在微信技术群里看到有人(优秀的 Python 工程师青南)发表了一个用于自动化提取文本的算法库, GeneralNewsExtractor [1] (以下简称 GNE)。这个库参考了武汉邮电科学研究院洪鸿辉、丁世涛、黄傲、郭致远等人编写的论文——《基于文本及符号密度的网页正文提取方法》,并在论文的基础上用 Python 代码进行了具体实现,也就是 GNE。它的原理是通过提取网

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值