大规模爬虫流程总结

爬虫是一个比较容易上手的技术,也许花5分钟看一篇文档就能爬取单个网页上的数据。但对于大规模爬虫,完全就是另一回事,并不是1*n这么简单,还会衍生出许多别的问题。

系统的大规模爬虫流程如图所示。

大数据

先检查是否有API

API是网站官方提供的数据接口,如果通过调用API采集数据,则相当于在网站允许的范围内采集,这样既不会有道德法律风险,也没有网站故意设置的障碍;不过调用API接口的访问则处于网站的控制中,网站可以用来收费,可以用来限制访问上限等。整体来看,如果数据采集的需求并不是很独特,那么有API则应优先采用调用API的方式。

数据结构分析和数据存储

爬虫需求要十分清晰,具体表现为需要哪些字段,这些字段可以是网页上现有的,也可以是根据网页上现有的字段进一步计算的,这些字段如何构建表,多张表如何连接等。值得一提的是,确定字段环节,不要只看少量的网页,因为单个网页可以缺少别的同类网页的字段,这既有可能是由于网站的问题,也可能是用户行为的差异,只有多观察一些网页才能综合抽象出具有普适性的关键字段——这并不是几分钟看几个网页就可以决定的简单事情,如果遇上了那种臃肿、混乱的网站,可能坑非常多。

对于大规模爬虫,除了本身要采集的数据外,其他重要的中间数据(比如页面Id或者url)也建议存储下来,这样可以不必每次重新爬取id。

数据库并没有固定的选择,本质仍是将Python里的数据写到库里,可以选择关系型数据库MySQL等,也可以选择非关系型数据库MongoDB等;对于普通的结构化数据一般存在关系型数据库即可。sqlalchemy是一个成熟好用的数据库连接框架,其引擎可与Pandas配套使用,把数据处理和数据存储连接起来,一气呵成。

数据流分析

对于要批量爬取的网页,往上一层,看它的入口在哪里;这个是根据采集范围来确定入口,比如若只想爬一个地区的数据,那从该地区的主页切入即可;但若想爬全国数据,则应更往上一层,从全国的入口切入。一般的网站网页都以树状结构为主,找到切入点作为根节点一层层往里进入即可。

值得注意的一点是,一般网站都不会直接把全量的数据做成列表给你一页页往下翻直到遍历完数据,比如链家上面很清楚地写着有24587套二手房,但是它只给100页,每页30个,如果直接这么切入只能访问3000个,远远低于真实数据量;因此先切片,再整合的数据思维可以获得更大的数据量。显然100页是系统设定,只要超过300个就只显示100页,因此可以通过其他的筛选条件不断细分,只到筛选结果小于等于300页就表示该条件下没有缺漏;最后把各种条件下的筛选结果集合在一起,就能够尽可能地还原真实数据量。

明确了大规模爬虫的数据流动机制,下一步就是针对单个网页进行解析,然后把这个模式复制到整体。对于单个网页,采用抓包工具可以查看它的请求方式,是get还是post,有没有提交表单,欲采集的数据是写入源代码里还是通过AJAX调用JSON数据。

同样的道理,不能只看一个页面,要观察多个页面,因为批量爬虫要弄清这些大量页面url以及参数的规律,以便可以自动构造;有的网站的url以及关键参数是加密的,这样就悲剧了,不能靠着明显的逻辑直接构造,这种情况下要批量爬虫,要么找到它加密的js代码,在爬虫代码上加入从明文到密码的加密过程;要么采用下文所述的模拟浏览器的方式。

数据采集

之前用R做爬虫,不要笑,R的确可以做爬虫工作;但在爬虫方面,Python显然优势更明显,受众更广,这得益于其成熟的爬虫框架,以及其他的在计算机系统上更好的性能。scrapy是一个成熟的爬虫框架,直接往里套用就好,比较适合新手学习;requests是一个比原生的urllib包更简洁强大的包,适合作定制化的爬虫功能。requests主要提供一个基本访问功能,把网页的源代码给download下来。一般而言,只要加上跟浏览器同样的Requests Headers参数,就可以正常访问,status_code为200,并成功得到网页源代码;但是也有某些反爬虫较为严格的网站,这么直接访问会被禁止;或者说status为200也不会返回正常的网页源码,而是要求写验证码的js脚本等。

用户喜欢...

大数据对投资和金融世界的影响

大数据对投资的影响是巨大的,并将改变金融世界和人们的投资习惯。 传统上,投资世界是平淡无奇的,并且具有排他性。投资工具彼此之间差别不大,最低资本要求意味着投资也只能供给少...


英特尔助力阿里云创造世界纪录 加速大数据计算创新突破

在2019年云栖大会上,英特尔与阿里巴巴共同宣布,在国际大数据性能基准测试TPCx-BB[1]中,由英特尔支持的阿里云MaxCompute以100TB的数据规模创造世界纪录。TPCx-BB是目前业界最全面的端到端大数...


大数据如何改变社交媒体营销

如今,大数据在市场营销中发挥重要作用,并以许多方式正在改变社交媒体营销。 大数据是近年来促进营销领域的最令人印象深刻的技术进步之一。虽然在某些圈子里,大数据已经成为一个流...


区块链如何改变大数据行业?

很多人都听到过大数据这个术语,它可能出现在与科技行业相关的视频中,也可能出现在人们的办公室里。大数据是2019年的热门话题之一,每个技术爱好者都在讨论它带来的变化和影响。 大数...


应该在云中存储大数据的5个理由

如果不确定如何正确存储大数据,则应该将大数据存储在云中。 信息存储只能通过位于隐蔽位置的传统远程服务器来完成的日子已经一去不复返了。如今采用云端存储数据,其中信息和数据以...


从云计算大数据等方面建立评价体系

中国生产力学会承办的第十九届世界生产力大会将于2019年11月16日至18日在中国成都召开。来自世界不同的国家或地区的工商界领袖、政界人物、行业管理者、生产力科学领域专家学者等相关人...


人工智能和大数据存在什么隐患?

从数据稀缺到现在有大量的数据,近年来,可用的数据量呈指数级增长,大数据变得无处不在。这是由于数据记录设备数量的巨大增长,以及这些设备之间通过物联网连接。似乎每个人都有收...


百度视频8月影视大数据报告 国产片势头强劲

8月,影视剧延续暑期的热度。国产片势头强劲,《哪吒之魔童降世》、《烈火英雄》等影片热度持续飙升;电视剧也很丰富多彩,都市家庭、古装、奇幻等题材的多部高口碑、高热度剧相继登场...


上海市大数据中心与顺丰速运上海公司昨日签署合作框架协议

上海市大数据中心与顺丰速运上海公司昨日签署合作框架协议,今后一网通办服务中,用户在物流寄送方面除了现有的邮政EMS,还可以选择顺丰。上海市委常委、常务副市长陈寅等见证签约仪...


促进电子邮件营销转换的5个大数据策略

采用大数据可以显著改进和增加电子邮件营销转换率。企业在电子邮件营销方面可以尝试大数据策略。 大数据几乎在数字营销领域的每个方面都发挥着至关重要的作用,企业可以使用大数据来...


中国大数据市场保持稳定增长

咨询机构IDC最新发布的报告预测,2019年,大数据与商业分析解决方案全球市场的整体收益将达到1896.6亿美元(约合人民币13495.1亿元),这一数字相比2018年增长12.1%。在2019年~2023年的预测期内,全...


贵州大学迎新首次使用大数据

拍张全家福 9月16日,贵州大学迎来了来自全国各地的9436名本科新生,其中包括了7600余名00后小萌新,1800余名90后萌新。迎新现场,由学长学姐们组成的迎新志愿者,从接车、报到、办理入住手...


百度发布国庆出行大数据预测报告 北京长春乐山将位列易堵城市前三

近日,百度地图联合交通运输部科学研究院、携程、中国天气网、百度百科发布《2019年国庆节假期出行预测报告》(以下简称《报告》)。报告基于百度地图海量的去隐私化交通出行数据、车辆...


到2020年南通力争建成华东区域特色大数据产业集聚区

中国江苏网9月16日讯 (记者 贲腾 陈明) 南通市日前在上海举办长三角大数据一体化发展论坛。会上,沪通签订大数据基础设施和产业发展战略合作协议,共建数字长三角,为长三角区域一体化发展...


重庆市智慧体育大数据中心在万盛上线

近日,记者从2019重庆市体育旅游产业发展大会获悉,重庆市智慧体育大数据中心在万盛上线。同时,大会还发布了重庆市打造三个一批体旅精品评选结果。 智慧体育大数据中心由重庆有线电视...


数据共享全自动数据治理 无锡城市大数据中心二期上线

无锡城市大数据中心二期8日正式上线发布。升级后的大数据中心具备全线上数据共享、全自动数据治理、多维度数据标签、集约化数据服务、便捷化多云纳管等多种功能,将支撑无锡智慧城市...