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

    文章

    4976

    浏览量

    74378
  • python
    +关注

    关注

    58

    文章

    4885

    浏览量

    90307
  • 爬虫
    +关注

    关注

    0

    文章

    87

    浏览量

    8175
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    千兆网络变压器选型实战:从PoE等级到PHY匹配的完整技术手册

    随着工业以太网、安防监控、光伏储能、无线AP等场景全面铺开,千兆网络变压器已成为硬件设计中不可或缺的关键器件。然而,很多工程师在选型时容易忽略三个核心问题: PoE等级不匹配 → 供电不稳,设备掉电
    发表于 04-16 08:44

    千兆网络变压器选型实战指南:PoE等级、封装温度与PHY芯片匹配要点

    随着千兆以太网在工业交换机、PoE摄像头、无线AP、光伏逆变器等场景的全面普及,千兆网络变压器已成为硬件设计中不可或缺的关键器件。然而,很多工程师在选型时容易忽略:PoE等级不匹配会导致供电不稳
    发表于 04-15 08:58

    EMC 电磁兼容性还分等级?看看你的设备,究竟属于哪一级.

    )。 很多设备在实验室里跑得很好,参数也不差,一到工业现场却开始出现各种“玄学问题”: 设备偶发死机 通信无故中断 IO 信号乱跳 重启后又一切正常 这些问题,90% 都和 EMC 有关。 但更关键的是——EMC,其实是分等级的。 01 先弄清楚:
    的头像 发表于 01-23 16:49 855次阅读
    EMC 电磁兼容性还<b class='flag-5'>分等级</b>?看看你的设备,究竟属于哪一级.

    解读“网络安全等级保护”:守护网络空间的法律基石与实战指南

    前言服务器上稳定闪烁的指示灯背后,是等级保护制度为海量数据流动筑起的无形防线——它们不仅是技术标准,更是《网络安全法》规定的国家基石。人们经常听到“等保二级”、“等保三级”,它们并非简单的数字标签
    的头像 发表于 01-12 17:31 709次阅读
    解读“<b class='flag-5'>网络安全等级</b>保护”:守护<b class='flag-5'>网络</b>空间的法律基石与实战指南

    京东关键词搜索商品列表的Python爬虫实战

    京东关键词搜索商品列表 Python 爬虫实战 你想要实现京东关键词搜索商品的爬虫,我会从 合规声明、环境准备、页面分析、代码实现、反爬优化 五个方面展开,帮助你完成实战项目。 一、前置声明(重要
    的头像 发表于 01-04 10:16 1270次阅读

    电能质量在线监测装置的暂态事件台账存储容量有限,如何进行数据管理?

    丢失、存储资源高效利用、运维成本可控。以下是结构化的解决方案: 一、核心原则:数据分级,价值优先 首先按数据价值划分等级,优先保障高价值数据的存储与备份,避免 “一刀切” 的存储策略导致关键数据丢失: 数据等级 数据类型
    的头像 发表于 12-11 10:53 621次阅读
    电能质量在线监测装置的暂态事件台账存储容量有限,如何进行数据管理?

    # 深度解析:爬虫技术获取淘宝商品详情并封装为API的全流程应用

    需求。本文将深入探讨如何借助爬虫技术实现淘宝商品详情的获取,并将其高效封装为API。 一、爬虫技术核心原理与工具 1.1 爬虫运行机制 网络爬虫
    的头像 发表于 11-17 09:29 479次阅读

    网线分等级吗?常见的网线等级有哪些

    网线确实存在等级划分,主要依据其传输性能、适用场景和标准规范进行分类。以下是常见的网线等级及特点: 一、按传输速率分类 Cat5(五类线) 传输频率:100MHz 最大速率:100Mbps(百兆
    的头像 发表于 10-10 10:52 3033次阅读

    从 0 到 1:用 PHP 爬虫优雅地拿下京东商品详情

    PHP 语言 实现一个 可运行的京东商品爬虫 ,不仅能抓取商品标题、价格、图片、评价数,还能应对常见的反爬策略。全文附完整代码, 复制粘贴即可运行 。 一、为什么选择 PHP 做爬虫? 虽然 Python 是爬虫界的“老大哥”
    的头像 发表于 09-23 16:42 1064次阅读
    从 0 到 1:用 PHP <b class='flag-5'>爬虫</b>优雅地拿下京东商品详情

    电能质量在线监测装置的精度等级和准确度的关系是否受测量参数的影响?

    ,导致同一装置对不同参数的 “精度等级标称” 与 “实际准确度表现” 的匹配关系完全不同 —— 部分参数的准确度易符合其精度等级,部分参数则可能因测量难度高而偏离精度等级。 一、核心前
    的头像 发表于 09-12 10:02 841次阅读
    电能质量在线监测装置的精度<b class='flag-5'>等级</b>和准确度的关系是否受测量参数的影响?

    Nginx限流与防爬虫配置方案

    在互联网业务快速发展的今天,网站面临着各种流量冲击和恶意爬虫的威胁。作为运维工程师,我们需要在保证正常用户访问的同时,有效防范恶意流量和爬虫攻击。本文将深入探讨基于Nginx的限流与防爬虫解决方案,从原理到实践,为大家提供一套完
    的头像 发表于 09-09 15:52 1082次阅读

    设置RDP等级为2的同时,有什么办法可以确保后续还能够烧录程序

    请问有在将RDP等级设置为2的前提下,确保后续还能够烧录程序的办法吗
    发表于 07-10 06:12

    IP防护等级说明

    IP防护等级说明
    发表于 06-24 16:55 2次下载