更多>>关于我们

西安鲲之鹏网络信息技术有限公司从2010年开始专注于Web(网站)数据抓取领域。致力于为广大中国客户提供准确、快捷的数据采集相关服务。我们采用分布式系统架构,日采集网页数千万。我们拥有海量稳定高匿HTTP代理IP地址池,可以有效绕过各种反采集策略。

您只需告诉我们您想抓取的网站是什么,您感兴趣的字段有哪些,你需要的数据是哪种格式,我们将为您做所有的工作,最后把数据(或程序)交付给你。

数据的格式可以是CSV、JSON、XML、ACCESS、SQLITE、MSSQL、MYSQL等等。

更多>>官方微博

当前位置: 首页 > 技术文章 >
淘宝旅行机票价格采集方案(Webkit实现)
发布时间:2013-11-18 来源:未知 浏览:

    淘宝旅行是淘宝网旗下的综合性旅游出行服务平台。淘宝旅行整合数千家机票代理商、航空公司、旅行社、旅行代理商资源,为旅游者提供国内机票/国际机票/酒店客栈/景点门票/国内国际度假旅游/签证(通行证)/旅游卡券/租车/邮轮等旅游产品的信息搜索、购买、售后服务的一站式解决方案。全程采用支付宝担保交易,安全、可靠、有保证。 - 摘自百度百科

    淘宝旅行机票搜索结果采用Ajax方式加载,直接访问Ajax接口三次就会出现验证码。直接在浏览器内查询100次左右才会出现验证码。淘宝是如何识别浏览器的呢?抓包分析发现是通过ua参数,这个参数在浏览器中由JS动态产生,每次请求都不一样(应该是根据上次查询返回的Cookie计算出来的)。

    一种思路就是自己用程序实现这个ua生成算法,但是淘宝的ua生成算法非常复杂,而且淘宝还对代码做了加密,破解难度非常大。

    另一种思路是模拟浏览器,调用浏览器完成查询,并依次点击各"选择"按钮抓取各代理价格信息。我们最终采用了该方案,通过Webkit(PyQt4 Webkit)实现自定义的最小化浏览器进行抓取,具有以下优势:

1)支持多线程,克服了单浏览器窗口查询速度慢的问题。

2)支持代理列表,并且每个浏览器实例可以使用不同的代理IP,通过代理轮换可以有效规避浏览器内100次查询后出现验证码的问题。

3)可以跨平台(Win/Linux/Mac)使用,PyQt本身就是跨平台的解决方法,我们采用Headless WebKit方式实现的最小化浏览器支持在Linux无X server环境下运行。

方案演示(如下视频):

 

示例数据下载:

输出数据示例
特别说明:该文章为鲲鹏数据原创文章 ,您除了可以发表评论外,还可以转载到别的网站,但是请保留源地址,谢谢!!(尊重他人劳动,我们共同努力)
☹ Disqus被Qiang了,之前的评论内容都没了。现在改用国产的友言。如果您有爬虫相关技术方面的问题,欢迎发到我们的问答平台:http://spider.site-digger.com/
QQ在线客服
欢迎咨询,点击这里给我发送消息。
欢迎咨询,点击这里给我发送消息。