身处大数据时代中,我们面对海量的互联网数据,如何自动高效地获取感兴趣的信息并为我们所用是一个非常重要的问题,以下就针对这个重要的搜索引擎爬虫问题来做一个技术分享。
什么是SERP和搜索引擎爬虫:搜索引擎会根据特定的的策略,运用特定的计算机程序搜集互联网上的公开信息,再对收集到信息进行组织和处理后展示给用户,处理后的公开展示的数据就是搜索引擎结果数据即SERP(Search Engine Results Page)。搜索引擎爬虫是基于搜索引擎已经处理过的SERP数据二次收集,进行特定业务分析。
1.搜索引擎爬虫突出的两个问题:
- 主流搜索引擎都有严格的风控策略,如Google验证码,解决难度极高,技术上需要特殊处理
- 会拒绝访问密集的请求,技术上需要特殊处理,同时需要大量IP池资源
2.传统搜索引擎采集方案:
传统的爬虫方案是使用不同地区的IP构建代理IP池或者购买第三方代理IP池,然后开发主流搜索引擎采集程序调用代理IP池进行采集,大规模采集的话需要定制化开发处理平台的风控策略,如封IP、指纹识别、验证码等。当然优点是简单直接、成本低、可定制化爬虫需求,适合小规模、简单数据分析场景。
但是在规模化爬虫场景下弊端也非常明显:
- 工作量大,搜索引擎众多且每个搜索引擎有多个板块,每个板块都需要开发采集程序,写大量解析规则
- 自建IP池或者低质量代理IP,稳定性和数量不能很好保障,在反爬虫机制下IP资源会持续消耗,从而影响速度和数据的准确性
- 需要高级工程师开发相关风控模块,主流搜索引擎都有严格的风控策略,如Google验证码,解决难度极高
3.亮数据Bright Data SERP采集方案
最近SERP数据采集使用的是亮数据Bright Data研发的针对搜索引擎的采集产品,功能和亮点总结如下:
- 支持采集市面上主流的搜索引擎数据:Google、Bing、Yandex、DuckDuckGo等
- 上手方便,可自定义搜索参数,如页码、语言、定位、搜索类型等
- 支持搜索引擎常用板块的自动解析,无需编写大量采集程序和解析规则,支持采集不同板块的数据,如:关键字搜索、图片、购物、新闻、酒店、视频等
- 集成亮数据Bright Data全球网络代理,无需单独购买IP(就速度和结果来看,号称超7200万合法合规IP覆盖195个国家还是名副其实的)
- 集成自家研发的解锁技术,可以解决搜索引擎风控问题,摆脱网站反爬取限制,无需单独编写反爬虫程序模块
缺点:
- 采集成本相比传统代理较高(个人爬着玩的就不划算了)
- 受限于产品的解析模板,复杂型定制化采集较难实现,可以考虑使用亮数据Bright Data 数据采集器(web sraper IDE)进行自定义采集
简言之,相较于传统搜索引擎采集方案,亮数据Bright Data的SERP产品更为智能,可以便捷高效的获取搜索引擎数据,虽然成本比传统代理高,但人工成本和时间成本却大大降低了。有大规模采集需求的推荐一试。
4.亮数据Bright Data SERP工作原理
- 客户端程序将搜索的url传给SERP API
- SERP系统根据传入的url,自动识别请求的搜索引擎,并通过代理、解锁器等技术解析和获取目标搜索引擎页面的数据
- SERP系统将解析好的数据以HTML/JSON格式传回给客户端
从获取数据的整个过程可以看出,客户端只关心获取哪些业务数据,无需操心任何风控,全权交由亮数据Bright Data智能系统解决,极为方便。
5.亮数据Bright Data SERP基本使用
注册Bright Data账号直接官网登录,不需要下载。在控制面板代理通道创建搜索引擎爬虫通道,添加IP白名单,之后就可以指令模拟。(很简单,上去大概看一下就能明白)
在指令模拟页面我们可以很方便的进行SERP API调试,获取我们需要的API参数和效果预览。可以看到当我们设置参数时,底下会自动生成多种语言的API代码,还可以尝试请求获取实时数据,方便我们将SERP API集成到我们的应用程序。
6.亮数据Bright Data SERP采集测试
接下来我将用一个采集案例来展示SERP完整的使用过程以及如何将SERP API集成到我们的采集程序。该案例是:使用Python Scrapy集成SERP API采集Google购物板块电商商品数据,并将json数据存入mongodb。
1.SERP API调试
还是在指令模拟页面调试API,获取我们需要的目标API。
搜索引擎选择Google,且搜索类型选择购物:
这里我们设定的关键字是pizza,也就是采集指定条件的pizza相关数据。
定位选择香港(可根据自己需求选择):
指定API通道和返回数据格式&#x