您当前的位置:首页 > 新闻 > 科技

写网络爬虫程序的四种难度

时间:2020-03-12 12:14:58  来源:  作者:

写爬虫,是一个非常考验综合实力的活儿。有时候,你轻而易举地就抓取到了想要的数据;有时候,你费尽心思却毫无所获。

好多Python爬虫的入门教程都是一行代码就把你骗上了“贼船”,等上了贼船才发现,水好深~比如爬取一个网页可以是很简单的一行代码:

r = requests.get('http://news.baidu.com')
写网络爬虫程序的四种难度

 

非常的简单,但它的作用也仅仅是爬取一个网页,而一个有用的爬虫远远不止于爬取一个网页

一个有用的爬虫,只需两个词来衡量:

  • 数量:能否抓全所有该类数据
  • 效率:抓完所有数据需要多久一天还是一个月

但要做到这两个词,却是要下很多功夫。自己下功夫是一方面,也很重要的是你要抓全的目标网站给你出了多少难题。综合起来,就写一个爬虫有多少难度。

 

网络爬虫难度一:只需爬取html网页但要上规模

 

这里我们举个新闻爬虫的例子。大家都用过百度的新闻搜索吧,我就拿它的爬虫来讲讲实现上的难度。

新闻网站基本上不设防,新闻内容都在网页的html代码里了,抓全一个网页基本上就是一行的事情。似乎听上去很简单,但对于一个搜索引擎级的爬虫,就不那么简单了,要把几千几万家新闻网站的新闻都及时抓取到也不是一件容易的事情。

我们先看看新闻爬虫的简单流程图:

写网络爬虫程序的四种难度

 

从一些种子网页开始,种子网页往往是一些新闻网站的首页,爬虫抓取网页,从中提取网站URL放到网址池再进行抓取。这样就从几个网页开始,不断扩展到其它网页。爬虫抓取的网页也越来越多,提取出的新网网址也会成几何级数增长。

如何能在最短时间抓取更多网址?

这就是其中一个难度,这不是目标网址带来的,而是对我们自身自愿的考验:

  • 我们的带宽够吗
  • 我们的服务器够吗,单台不够就要分布式

如何能及时抓取到最新的新闻?

这是效率之外的另一个难度,如何保证及时性?几千家新闻网站,时刻都在发布最新新闻,爬虫在织网式抓取“旧”新闻的同时,如何兼顾获取“新”新闻呢?

如何存储抓取到的海量新闻?

爬虫织网式的爬取,会把每个网站几年前几十年前的新闻网页都给翻出来,从而获得海量的网页需要存储。就是存储上的难度。

如何清理提取网内容?

从新闻网页的html里面快速、准确提取想要的信息数据,比如标题、发布时间、正文内容等,这又带来内容提取上的难度。

 

网络爬虫难度二:需要登录才能抓到想要的数据

 

人是贪婪的,想要的数据无穷尽,但是很多数据不是你轻易就可以获得的。有一大类数据就是需要账户登录后才能看到,也就是说,爬虫请求时必须是登录状态才能抓取数据。

如何获取登录状态?

老猿前面已经说过了,http协议的性质决定了登录状态就是一些cookies,那么如何获得登录状态就是一个非常有难度的问题。

有些网站登录过程很简单,把账户、密码发给服务器,服务器验证通过返回表示已登录的cookies。这样的网站,比较容易实现自动登录,爬虫运行过程全程无需人工干预,你就有更多时间喝茶、聊天、上猿人学看python。

如何处理验证码?

然而,网站们既然要求你登录了,他们就不会这么轻易放过你,要做的更绝才能让小猿们善罢甘休,那就是上验证码!

没错,就是变态的验证码。

有的运用社会工程,进行人工识别验证码;也有,通过图像处理技术,尤其如今火热的深度学习、人工智能的技术,来自动识别验证码。

那么,当你写爬虫时遇到验证码该怎么办?

 

网络爬虫难度三:异步加载甚至JAVAScript解密

 

前面的两个难度,都是靠我们研究数据加载过程,然后用Python代码可以重现出来,进行抓取的。

而遇到达第三个难度时,研究数据加载过程会让你十分痛苦、近乎崩溃。异步加载流程和服务器来来回回好多次,最后得到的数据还要通过JavaScript解密才能看到,这都是压垮小猿们的最后一根稻草。

有没有终极大招可以破解呢?

 

网络爬虫难度四:App的抓取

 

APP连包都抓不到

抓包是写爬虫组装请求数据的基础条件,对APP抓包的繁复度远超网站,APP对代理抓包的检测,对网络请求库的混淆,使用socket通信等阻挡了相当部分爬虫选手。

请求Token参数的加密

APP请求参数的组装是一个黑盒,不一窥参数的组装流程,请求不到数据;APP repsonse回来的数据可能是二进制或编码过,不知道如何解码还原,抓下来数据也只能望洋兴叹。

要能正确抓取APP数据就需要具备网络安全行业的初中级知识。

总结了一下这爬虫的一些难度,明年应该会结合一些实际示例来讲解如何破解这些不同程度的难题。



Tags:网络爬虫   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
在了解爬虫基础、请求库和正则匹配库以及一个具体豆瓣电影爬虫实例之后,可能大家还对超长的正则表达式记忆犹新,设想如果想要匹配的条目更加多那表达式长度将会更加恐怖,这显然...【详细内容】
2021-04-12  Tags: 网络爬虫  点击:(262)  评论:(0)  加入收藏
布隆过滤器(BloomFilter)类似于hash set,用来判断元素是否在集合中。但是与hash set区别是:布隆过滤器不需要存储元素值,就能判断元素是否在集合中。说一下布隆过滤器优缺点: 优点...【详细内容】
2020-09-29  Tags: 网络爬虫  点击:(121)  评论:(0)  加入收藏
我们先以一个最简单的实例来了解模拟登录后页面的抓取过程,其原理在于模拟登录后 Cookies 的维护。1. 本节目标私信小编01即可获取大量的Python学习资料本节将讲解以 GitHub...【详细内容】
2020-09-27  Tags: 网络爬虫  点击:(84)  评论:(0)  加入收藏
网络相关 通用 urllib – 网络库(标准库) requests – 网络库 grab – 网络库(基于pycurl) pycurl – 网络库 (与 libcurl 绑定) urllib3 – 具有...【详细内容】
2020-03-14  Tags: 网络爬虫  点击:(94)  评论:(0)  加入收藏
网络爬虫基本思路基本思路:由关键字指定的url把所有相关的html页面全抓下来(html即为字符串),然后解析html文本(通常是正则表达式或者现成工具包如jsoup),提取文本信息,然后把文本信...【详细内容】
2020-03-12  Tags: 网络爬虫  点击:(80)  评论:(0)  加入收藏
写爬虫,是一个非常考验综合实力的活儿。有时候,你轻而易举地就抓取到了想要的数据;有时候,你费尽心思却毫无所获。好多Python爬虫的入门教程都是一行代码就把你骗上了“贼船”,等...【详细内容】
2020-03-12  Tags: 网络爬虫  点击:(110)  评论:(0)  加入收藏
以前在学校做科研都是直接利用网上共享的一些数据,就像我们经常说的dataset、beachmark等等。但是,对于实际的工业需求来说,爬取网络的数据是必须的并且是首要的。最近在国内一...【详细内容】
2019-11-26  Tags: 网络爬虫  点击:(71)  评论:(0)  加入收藏
很多程序员都很清楚一个专属名词,那就是——爬虫,而大多数网友对于这个词语还比较陌生,属于新鲜的词汇,但是随着互联网的发展,这种网络爬虫其实和我们日常生活息息相关...【详细内容】
2019-10-28  Tags: 网络爬虫  点击:(161)  评论:(0)  加入收藏
爬虫的编程语言有不少,但 Python 绝对是其中的主流之一。下面就为大家介绍下 Python 在编写网络爬虫常常用到的一些库。请求库:实现 HTTP 请求操作 urllib:一系列用于操作URL...【详细内容】
2019-09-26  Tags: 网络爬虫  点击:(118)  评论:(0)  加入收藏
Beautiful Soup库安装pip install beautifulsoup4测试:import requestsr = requests.get("http://python123.io/ws/demo.html")demo = r.textform bs4 import BeautifulSoup...【详细内容】
2019-09-23  Tags: 网络爬虫  点击:(140)  评论:(0)  加入收藏
▌简易百科推荐
非法购买公民信息、开发人脸认证规避技术……今年年初,广东省公安厅网安部门侦破全国首例破解“青少年防沉迷系统”的新型网络犯罪案件,抓获犯罪嫌疑人13名,查处非...【详细内容】
2021-12-28    人民日报客户端  Tags:数据安全步   点击:(5)  评论:(0)  加入收藏
就在今天,腾讯方面宣布将在2022年1月31日下架企业QQ和营销QQ,其实这一消息的降临并不让笔者意外,因为早在今年的10月28日20点之后,企业QQ和营销QQ就被停止了续费服务。相信很多...【详细内容】
2021-12-27  科技探险家    Tags:企业QQ   点击:(21)  评论:(0)  加入收藏
日前,上海交通大学发布《全球电竞之都评价报告》,对全球15个致力于发展电竞之都的城市进行评价,上海作为中国城市电竞发展的排头兵,其拥有众多优质电竞企业及完整产业集群,因此排...【详细内容】
2021-12-27  经济日报    Tags:电竞   点击:(3)  评论:(0)  加入收藏
为优化网络氛围环境,微博又开始整顿用户信息了。本月月初,微博官方发布公告,要求昵称中带有如“二货”“SB”“瘪三”“娘炮”等明显低俗或侮辱性词汇的用户尽快修改,否则将面临...【详细内容】
2021-12-24  运了个营    Tags:微博   点击:(10)  评论:(0)  加入收藏
昨日谷歌宣布,自2022年12月19日开始停止对OnHub的软件支持,OnHub路由器仍将提供Wi-Fi信号,但用户无法用谷歌Home应用程序管理它。无法更新Wi-Fi网络设置、添加额外的Wifi设备或...【详细内容】
2021-12-22  雷峰网    Tags:Google OnHub   点击:(5)  评论:(0)  加入收藏
IT之家 12 月 20 日消息,百度网盘青春版 iOS 客户端今日晚间率先开启内测,安卓客户端将在稍后内测。使用苹果 iPhone 的IT之家小伙伴可以点此下载内测版,需要先下载 TestFlight...【详细内容】
2021-12-21  IT之家    Tags:百度网盘   点击:(10)  评论:(0)  加入收藏
对于拼车单,是接还是不接,不少网约车司机表示很矛盾。接吧,钱少事多,常常跑了个寂寞,不接吧,车多客少,挑三拣四没饭吃。 在平台大力推广拼车单之下,不少司机迫于生活压力,最终还是打...【详细内容】
2021-12-17  网约车情报分享    Tags:滴滴   点击:(9)  评论:(0)  加入收藏
蓝鲸TMT频道12月16日讯,据饿了么官方微信公众号,近日,在圆桌会上,蓝骑士与平台交流了配送安全问题。饿了么表示,线上将技术手段融入安全防护;线下将持续进行安全培训,并试点智能头...【详细内容】
2021-12-17    金融界  Tags:饿了么   点击:(24)  评论:(0)  加入收藏
开源最前线(ID:OpenSourceTop) 猿妹编译项目地址: https://github.com/restic/restic全球知名代码托管平台 GitHub 今天就重磅发布了今年的年度报告——《2021 年度 O...【详细内容】
2021-12-17  Python部落    Tags:   点击:(9)  评论:(0)  加入收藏
新京报快讯 据中国网络视听节目服务协会网站消息,12月15日,中国网络视听节目服务协会发布了《网络短视频内容审核标准细则》(2021)。中国网络视听节目服务协会组织有关短视频平...【详细内容】
2021-12-16    新京报  Tags:短视频   点击:(11)  评论:(0)  加入收藏
最新更新
栏目热门
栏目头条