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

    文章

    4558

    浏览量

    66920
  • python
    +关注

    关注

    52

    文章

    4683

    浏览量

    83502
  • 爬虫
    +关注

    关注

    0

    文章

    77

    浏览量

    6553
收藏 人收藏

    评论

    相关推荐

    如何选择合适的无源晶振精度等级

    在现代电子系统中,无源晶振作为时间基准和频率源,其精度等级的选择对于确保系统的稳定性和准确性至关重要。无源晶振的精度等级决定了其输出频率的稳定性和准确性,进而影响到整个系统的性能。因此,选择合适
    的头像 发表于 04-26 08:34 68次阅读
    如何选择合适的无源晶振精度<b class='flag-5'>等级</b>

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

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

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

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

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

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

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

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

    爬虫的基本工作原理 用Scrapy实现一个简单的爬虫

    数以万亿的网页通过链接构成了互联网,爬虫的工作就是从这数以万亿的网页中爬取需要的网页,从网页中采集内容并形成结构化的数据。
    的头像 发表于 12-03 11:45 509次阅读
    <b class='flag-5'>爬虫</b>的基本工作原理 用Scrapy实现一个简单的<b class='flag-5'>爬虫</b>

    Python网络爬虫Selenium的简单使用

    想要学习爬虫,如果比较详细的了解web开发的前端知识会更加容易上手,时间不够充裕,仅仅了解html的相关知识也是够用的。
    的头像 发表于 11-14 14:44 228次阅读
    Python<b class='flag-5'>网络</b><b class='flag-5'>爬虫</b>Selenium的简单使用

    如何看待Python爬虫的合法性?

    Python爬虫是一种自动化程序,可以从互联网上获取信息并提取数据。通过模拟网页浏览器的行为,爬虫可以访问网页、抓取数据、解析内容,并将其保存到本地或用于进一步分析
    的头像 发表于 11-14 10:35 257次阅读

    feapder:一款功能强大的爬虫框架

    今天推荐一款更加简单、轻量级,且功能强大的爬虫框架:feapder 项目地址: https://github.com/Boris-code/feapder 2. 介绍及安装 和 Scrapy 类似
    的头像 发表于 11-01 09:48 654次阅读

    在存储程序的FLASH中分出一个区域用来存储数据,这样做难度大不大呀?

    我们的一个FPGA项目需要存储数据。 想在存储程序的FLASH中分出一个区域用来存储数据,这样做难度大不大? 我们的软件工程师说非常复杂,是这样的吗?
    发表于 10-18 06:31

    网络爬虫 Python和数据分析

    网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。传统爬虫从一个或若干初始网页的URL开始,获得初始网页上的URL,在抓取网页的过程中,不断从当前
    发表于 09-25 08:25

    一套完整的网络安全等级(等保2.0)建设方案

    某工程职业学院信息系统的安全体系设计,从信息安全等级保护技术体系,信息安全等级保护管理体系,线下安全服务三个角度出发,对设备、终端、业务系统、网络接入、人员管理提供全方位的安全保障,总体安全架构如图所示
    的头像 发表于 06-29 16:21 936次阅读
    一套完整的<b class='flag-5'>网络安全等级</b>(等保2.0)建设方案

    如何降低开发难度,有哪些难度

    效地减少开发难度,我们还可以一个产品工艺表,避免增加生产成本。 毕竟是要与最终产品打交道,不要只学自动化,模具也要学,甚至搬砖也要学,到时候一定能派上用场。当然,你不可能都学懂,但你必须看过一遍。
    发表于 06-09 12:32

    自动驾驶的划分等级

    自动驾驶,又称无人驾驶、电脑驾驶或轮式移动机器人,是依靠计算机与人工智能技术在没有人为操纵的情况下,完成完整、安全、有效的驾驶的一项前沿科 技。 自动驾驶的最原始划分等级,始于2013年美国国家公路交通安全管理局(NHTSA)发布的五级标准和美国机动车工程师学会(SAE)的六级标准:
    发表于 06-02 15:09 0次下载
    自动驾驶的划<b class='flag-5'>分等级</b>

    IP防护等级怎么定,IP防护等级数字时什么意思

    IP防护等级怎么定,IP防护等级数字代表等级是什么。
    的头像 发表于 05-27 11:23 889次阅读