分享好友 最新动态首页 最新动态分类 切换频道
Python爬虫的四个水平,你在哪一个层次?
2024-12-26 12:02

Python爬虫老生常谈的话题了,什么兼职接单啦、爬取小说电影榜单、商业化的数据收集等,在大数据时代它能用到的地方还是蛮多的,业余玩玩小意思,如果是想要往这方面学精学深,那得下一番功夫了。

爬虫能力按层次来分大概也可以分为初级、中级、高级、更高一级这四个水平,要说爬虫技术能不能达到巅峰?反正我是不敢说有,毕竟学海无涯、学无止境,可以朝着这个目标奋斗哈哈~

一、初级爬虫:掌握Python的语法和一些常用库的使用

虽然说学爬虫不需要做到那么精通Python,但如果你是零基础上手编程,基础语法是要认真去学的!万丈高楼平地起

一定要先熟悉基础语法,你可以不用,但不能不会。

初级爬虫的技能要求

  1. Python 【语言基础】
  2. requests 【请求相关】
  3. lxml【解析相关】
  4. XPath 【解析相关】
  5. BeautifulSoup【解析相关】
  6. PyQuery 【解析相关】
  7. MySQL 【数据库】
  8. MongoDB【数据库】
  9. Elasticsearch【我没用过这个,不清楚用到他什么特性】
  10. Kafka【消息队列相关】

这个阶段最主要的就是掌握Python语法基础、常用库的使用

请求库的话一般Requests能应付大部分简单网站的爬取,当然是在没有反爬机制的前提下,Selenium的话主要是用它来模拟真实浏览器对URL进行访问,从而对网页进行爬取,往往要配合PhantomJS使用,Selenium+PhantomJS可以抓取使用JS加载数据的网页。

解析常用 到XPath、BeautifulSoup、PyQuery 或者正则表达式,初级的话能够熟练两三种解析库基本也够用了。

正则一般用来满足特殊需求、以及提取其他解析器提取不到的数据,正常情况下我会用bs4,bs4无法满足就用正则。

没有基础的话,在Python入门这一块需要消化的知识点还是不少的,除了Python之外,基础的计算机网络知识、CSS、HTML等这些都是需要补充学习的。

给零基础初学者的一点建议是:明确好自己的学习目标,掌握好自己的学习节奏

那些陌生的密密麻麻的知识点介绍,有些同学看了可能会当场劝退!Python的语法还算是简单,虽然也很多,但一步一步来呗,这里也分享了一些Python语法学习和学习路径资料,大家可以参考看看~下方自提↓↓

<Python基础语法教程及学习路径资料 无偿分享>

初级水平的爬虫主要重在基础,能爬着基本的网站玩玩,碰到有反爬的网站就不太行了,只能说你的爬虫之路还任重而道远。

二、中级爬虫:职业爬虫师的基本水平

中级爬虫的技能要求

  1. Ajax【能通过Ajax接口获取数据】
  2. Puppeteer【基于JS的爬虫框架,可直接执行JS】
  3. Pyppeteer【基于Puppeteer开发的python版本,需要python异步知识】
  4. Selenium【常见的自动化工具,支持多语言】
  5. Splash【JavaScript渲染服务】
  6. 多进程【python多任务基础】
  7. 多线程【python多任务基础】
  8. 协程【python多任务基础】
  9. fiddler 【抓包工具】
  10. mitmproxy【中间人代理工具】
  11. appium【自动化工具】
  12. adb【安卓adb工具】
  13. Charles【抓包工具】

这个阶段就是爬虫技能的升级了,Ajax —多线程 —多进程等是重点的学习内容

现在很多网站的数据可能都是通过接口的形式传输的,或者即使不是接口那也是一些 JSON 的数据,然后经过 JavaScript 渲染得出来的。

如果还是用requests来爬是行不通的,所以大多数情况需要分析 Ajax,知道这些接口的调用方式之后再用程序来模拟。但如果有些接口带着加密参数,比如 token、sign的话,这时候就得去分析网站的 JavaScript 逻辑,简单粗暴的方法就是死抠代码!找出里面的代码逻辑,不过这事费时间费精力也费脑子,它的加密做的特厉害的话,你几天几夜不睡觉研究可能也不一定解的出来。还有一种方法相对省事一点,就是用 Puppeteer、Selenium、Splash来模拟浏览器的方式来爬取,这样就不用死抠Ajax 和一些 JavaScript 逻辑的过程,提取数据自然就简单一点。

单线程的爬虫简单是简单,但是速度慢啊

碰上个网络不好啥的,茶都要等凉凉了,所以利用多进程、多线程、协程能大幅度提升爬虫的速度,相关的库有threading和multiprocessing。

不过需要注意的一点是别把人家网站搞挂了

用 aiohttp、gevent、tornado 等等,基本上你想搞多少并发就搞多少并发,速度是成倍提上了,同时也注意一下自己的爬虫别被反爬干掉了,比如封账号、封IP、验证码啥的总之就是悠着点爬

有同学学到这里的时候会发现越学越难了,看是看完了,但看了什么记不起来了,你需要反复练习,同样的,你1个月是能跟着学完没有问题,但你能不能站得稳还是个问题。

在学习的时候多找一些有针对性的项目练练手,通过自己独立把代码敲出来来加深记忆和巩固!可以试试下面的这些爬虫练习项目,需要练习资源的下方自行进群添加群管理获取↓↓↓

<Python爬虫基础练习项目及学习资料 点击下载>

三、高级爬虫:进一步提高爬取效率

高级爬虫的技能要求

  1. RabbitMQ【消息队列相关】
  2. Celery【消息队列相关】
  3. Kafka【消息队列相关】
  4. Redis【缓存数据库 -----》 其实mongodb也可以充当这个角色】
  5. Scrapy-Redis【scrapy的redis组件】
  6. Scrapy-Redis-BloomFilter 【scrapy的布隆过滤器】
  7. Scrapy-Cluster 【我没用过,分布式解决方案】中文资料 英文资料
  8. 验证码破解
  9. IP代理池
  10. 用户行为管理
  11. cookies池 崔神建的代理池开源代码地址
  12. token池
  13. sign
  14. 账号管理

能达到这个层次的话,一般赚外快是不在话下了,赚的自然不少,这个阶段主要是两个重点:分布式爬虫和应对反爬的处理技巧。

分布式爬虫

分布式爬虫通俗的讲就是多台机器多个 spider 对多个 url 的同时处理问题,分布式的方式可以极大提高程序的抓取效率。

虽然听起来也很厉害,其实也是利用多线程的原理让多个爬虫同时工作,当你掌握分布式爬虫,实现大规模并发采集后,自动化数据获取会更便利。

需要掌握 Scrapy + MongoDB + Redis 这三种工具,但是分布式爬虫对电脑的CPU和网速都有一定的要求。

现在主流的 Python 分布式爬虫还是基于 Scrapy 的,对接 Scrapy-Redis、Scrapy-Redis-BloomFilter 或者用 Scrapy-Cluster 等等,他们都是基于 Redis 来共享爬取队列的,多多少少会遇到一些内存的问题。所以有些人也考虑对接到了其他的消息队列上面,比如 RabbitMQ、Kafka 等等,解决一些问题,效率也不差。

应对反爬

有爬虫就有反爬,什么滑块验证、实物勾选、IP检测(豆瓣和github,在检测到某一客户端频繁访问后,会直接封锁IP)、封号…反正各种奇葩的反爬都有,这时候就得知道如何去应付这些常见的反爬手段了。

常见的反爬虫措施有

  • 字体反爬
  • 基于用户行为反爬虫
  • 基于动态页面的反爬虫
  • IP限制
  • UA限制
  • Cookie限制

应对反爬的处理手段有

  • 控制IP访问次数频率,增加时间间隔
  • Cookie池保存与处理
  • 用户代理池技术
  • 字体反加密
  • 验证码OCR处理
  • 抓包

这里提示一点:技术学溜了,就不要去挑战反爬,搞过了你们懂得哈

四、更高一级的爬虫

这几点技能是需要掌握的

  1. JS逆向【分析目标站点JS加密逻辑】
  2. APP逆向【xposed可在不改变原应用代码基础上植入自己的代码】
  3. 智能化爬虫
  4. 运维

JS逆向

这就回到了前面讲过的这个 Ajax 接口会带着一些参数的这个问题,现在随着前端技术的进步和网站反爬意识的增强,很多网站选择在前端上下功夫,那就是在前端对一些逻辑或代码进行加密或混淆。用Selenium 等方式来爬行是行,效率还是低了,JS逆向则是更高级别的爬取技术。

但问题是难啊!JS逆向的修炼掉头发是少不了的

APP逆向

网页可以逆向,APP也能逆向,现在越来越多的公司都选择将数据放到 App 上面,在一些兼职网站上APP数据爬取这一类的报价在几千左右,这块是酬劳比较高的。

基本的就是利用抓包工具,Charles、Fiddler等,抓到接口之后,直接拿来模拟。想实现自动化爬取的话,安卓原生的 adb 工具也行,现在Appium 是比较主流的了。

APP逆向听着好像很简单,实际跟JavaScript逆向一样的烧脑。

智能化爬虫

如果说我要爬取一万个新闻网站数据,要一个个写 XPath的话我估计会见不到明天的太阳,如果用智能化解析技术,在不出意外的情况下,分分钟可以搞定。

用智能化解析,不论是哪个网站,你只需要把网页的url传递给它,就可以通过算法智能识别出标题、内容、更新时间等信息,而不需要重复编写提取规则。

简而言之就是爬虫与机器学习技术相结合,使得爬虫更加智能化

运维

主要体现在部署和分发、数据的存储和监控这几个方面,Kubernetes 、Prometheus 、Grafana是爬虫在运维方面用的比较多的技术。

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

上述这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以微信扫描下方CSDN官方认证二维码 即可领取↓↓↓

最新文章
2025年数字时代的数据人才岗位与技能概述
类别岗位名称技能工作内容数据战略与治理首席数据官 (CDO)战略思维、数据治理、利益相关方管理、趋势洞察制定企业数据战略、建立数据治理委员会、协调数据相关预算与资源配置、推动数据素养培训数据治理经理数据治理体系、元数据管理、数据
2024年适合大学生的7个AI工具:操作简单,一键生成,助力轻松完成简历/报告/各种作业,提供思路创意!
为学生朋友精心挑选了7款前沿AI工具,旨在助力每一位学子高效完成作业、激发无限创意、增强学习专注力~  1、笔墨写作 笔墨写作 - 领先的写作智能AI创作平台 | 官方首页笔墨写作是一款专注于各种文体写作的智能AI创作平台,提
2024新奥精准免费|社群释义解释落实,新奥精准免费社群释义解释落实策略分析
随着互联网的普及和数字化时代的来临,社群营销成为了企业推广产品和服务的重要渠道之一,作为关键词之一的“新奥精准免费”,代表着一种新型的社群营销理念,其背后蕴含着巨大的商业价值和社会价值,本文将围绕新奥精准免费社群展开分析,
2023 年度 JavaScript 框架和技术排行榜
本文首发于微信公众号:大迁世界,我会第一时间和你分享前端行业趋势,学习途径等等。更多开源作品请看 GitHub ,包含一线大厂面试完整考点、资料以及我的系列文章。简而言之:JavaScript + React + Redux 仍然占据主导地位。搭配 Next.js
2025重庆蛇年贺岁纪念币纪念钞中国银行预约兑换网点名单
  按照《新型冠状病毒肺炎防控方案(第九版)》和国务院联防联控机制综合组《关于进一步优化新冠肺炎疫情防控措施科学精准做好防控工作的通知》相关规定,经市、区两级专家研判和高新区疫情防控指挥部研究,报请市疫情防控指挥部批准,解除
2024年手游排行榜推荐 今年新出的好玩的手游有哪些
随着时代的不断变化,我们所接触的也是每天都是产出新的作品,大家可以看看本期关于2024年排行榜推荐今年新出的好玩的手游有哪些的相关内容,这里为玩家带来了一些好的手游作品,并且都是今年最新出炉的,能够接受新鲜的东西是非常难得,不
36漫画免费漫画官网下载
36漫画免费漫画官网一款十分经典的漫画阅读软件!用户们可以在这里轻松欣赏各种精彩的正版漫画,这里的所有漫画均为全彩漫画,无删减,章节齐全,且观看过程不会有广告出现,这里的漫画可无限观看,更是支持离线下载,喜欢的请下载体验!1.
ElasticSearch简介及ElasticSearch部署、原理和使用介绍
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。
2024年腾讯云双十二大促最后一波,云原生应用平台特惠促销!
​​2024年腾讯云双十二大促最后一波,云原生应用平台特惠促销!大促最后几天,都知道云产品每年都涨价,错过优惠不再有!腾讯云有优惠活动吗?2024年末腾讯云双十二大促活动,云服务器价格多少钱?2024年腾讯云12月轻量服务器多少钱一个月
2025九里别院(九里别院售楼处)官方网站_百度百科_上海房天下
“网红”白冰—同款别墅『九里别院』建面约800-1600㎡纯独栋!户均占地3亩!总价5300万起!附官方预约通道!══✦⫸上海松江九亭【九里别院】独栋别墅⫷✦══九里别院售楼处地址/官方电话400-877-8334√√(官方发布)上海松江九里别院售
相关文章
推荐文章
发表评论
0评