0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

写网络爬虫程序的难度是怎么分等级的

Wildesbeast 来源:今日头条 作者:猿人学 2020-02-05 11:49 次阅读

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

好多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数据就需要具备网络安全行业的初中级知识。

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

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 代码
    +关注

    关注

    30

    文章

    4788

    浏览量

    68628
  • python
    +关注

    关注

    56

    文章

    4797

    浏览量

    84695
  • 爬虫
    +关注

    关注

    0

    文章

    82

    浏览量

    6882
收藏 人收藏

    评论

    相关推荐

    IP地址数据信息和爬虫拦截的关联

    IP地址数据信息和爬虫拦截的关联主要涉及到两方面的内容,也就是数据信息和爬虫。IP 地址数据信息的内容丰富,包括所属地域、所属网络运营商、访问时间序列、访问频率等。 从IP地址信息中可以窥见
    的头像 发表于 12-23 10:13 48次阅读

    华为联合发布《自智网络等级测评白皮书》

    近日,由TM Forum主办的Innovate Asia峰会在泰国曼谷举行。在峰会期间,TM Forum和华为联合产业伙伴共同发布了《自智网络等级测评白皮书》,并为首批通过自智网络等级
    的头像 发表于 11-09 15:59 618次阅读

    触摸屏驱动板无法烧程序的相关原因

    每次听到别人说是什么原因导致触摸屏驱动板无法烧程序,就很想去讨论一下。今天就跟大家聊聊到底是什么原因导致的。
    的头像 发表于 10-21 11:19 243次阅读

    全球视野下的海外爬虫IP:趋势、机遇与风险

    在全球视野下,海外爬虫IP的使用呈现出一系列趋势,同时也伴随着机遇与风险。
    的头像 发表于 10-15 07:54 217次阅读

    海外爬虫IP的合法边界:合规性探讨与实践

    海外爬虫IP的合法边界主要涉及合规性探讨与实践。
    的头像 发表于 10-12 07:56 222次阅读

    如何利用海外爬虫IP进行数据抓取

    利用海外爬虫IP进行数据抓取需要综合考虑多个方面。
    的头像 发表于 10-12 07:54 199次阅读

    详细解读爬虫多开代理IP的用途,以及如何配置!

    爬虫多开代理IP是一种在爬虫开发中常用的技术策略,主要用于提高数据采集效率、避免IP被封禁以及获取地域特定的数据。
    的头像 发表于 09-14 07:55 502次阅读

    瀚海微SD NAND存储功能描述(23)速度等级测量条件和要求

    应用程序提供余量。 注:2级至6级在默认速度模式下以20MHz测量,10级在高速模式下以40MHz测量 注意事项:最低性能是在SD总线使用率达到100%时(访问时不假设有空闲时间),因此不定期卡会降低性能。 各转速等级性能参数
    的头像 发表于 09-05 10:24 301次阅读

    浪涌保护器怎么区分等级

    浪涌保护器(Surge Protection Device,简称SPD)是一种用于保护电气设备免受浪涌电流(Surge)损害的装置。浪涌电流是由于电气系统中的瞬态过电压或过电流引起的,可能对设备造成严重损害。浪涌保护器通过限制浪涌电流的幅度和持续时间,从而保护电气设备免受损害。 一、浪涌保护器的分类 按保护对象分类 浪涌保护器可以根据保护对象的不同分为以下几类: (1)电源浪涌保护器:用于保护电源系统的设备,如变压器、发电机、电动机等。 (2)信号
    的头像 发表于 07-13 14:48 906次阅读

    网络爬虫,Python和数据分析

    电子发烧友网站提供《网络爬虫,Python和数据分析.pdf》资料免费下载
    发表于 07-13 09:27 1次下载

    数据采集方法有哪些?工具有哪些?

    数据采集是数据分析和数据科学的基础,它涉及到从各种来源收集、整理和存储数据的过程。以下是一些常见的数据采集方法和工具,以及它们的特点和应用场景。 网络爬虫 网络爬虫是一种自动化的
    的头像 发表于 07-01 15:35 1353次阅读

    台湾电价全面调整,大户调涨幅度最大,民生用电不分等级全面上调

    台湾电力公司目前需要通过提升电价来弥补资金亏空,以免陷入资不抵债的困境。从四月开始,民生与产业用电价格上调的概率较大。根据中国台湾经济部门的初步计划,为了使低功率用户的电价恢复至合理水平
    的头像 发表于 03-10 12:22 1094次阅读

    湿敏元器件存储及使用规范

    到6级不等,每个级别代表不同的湿敏程度。较低的级别表示材料或产品对湿度变化更加敏感,可能需要更为严格的控制和保护措施,以避免损坏或性能下降。 器件容易受潮导致分层及部分损坏,为了避免器件损坏, 对不同材质器件湿敏进行要求,因此而划分等级如下图: 器件拆封
    的头像 发表于 03-10 11:18 6051次阅读
    湿敏元器件存储及使用规范

    全球新闻网封锁OpenAI和谷歌AI爬虫

    分析结果显示,至2023年底,超半数(57%)的传统印刷媒体如《纽约时报》等已关闭OpenAI爬虫,反之电视广播以及数字原生媒体相应地分别为48%和31%。而对于谷歌人工智能爬虫,32%的印刷媒体采取相同措施,电视广播和数字原生媒体的比率分别为19%和17%。
    的头像 发表于 02-27 15:31 857次阅读

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法

    如何解决Python爬虫中文乱码问题?Python爬虫中文乱码的解决方法 在Python爬虫过程中,遇到中文乱码问题是常见的情况。乱码问题主要是由于编码不一致所导致的,下面我将详细介绍如何解
    的头像 发表于 01-12 15:11 2405次阅读