分享好友 最新动态首页 最新动态分类 切换频道
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官方认证二维码 即可领取↓↓↓

最新文章
2023104期专家[词沈]双色球精准预测号下期
玩法本期推荐上期推荐命中情况红球24码01,04,06,0810,11,12,1415,16,17,1921,22,23,2526,27,28,2930,31,32,3301,03,06,0708,10,11,1213,14,15,1618,19,21,2223,25,26,2728,29,31,33对4码红球21码01,04,06,0810,11,12,1415,16,17,2225,26,27
Excel表格中的关键词替换与批量处理技巧
在处理Excel表格中的关键词替换与批量处理时,掌握一些技巧能够提高工作效率,使操作更加便捷。本文将介绍如何利用Excel进行关键词替换与批量处理,包括如何使用公式、筛选、查找替换等功能,帮助您轻松应对各种数据处理需求。1. 使用公式
(我本千金手游)我本千金破解满v满钻,揭秘网红热度背后的真相
在本篇千金破解满v满钻,揭秘网红热度背后的真相中,我们将探讨网红现象背后的原因,以及如何通过技术手段破解满v满钻的问题,我们将从社交媒体的角度出发,分析网红们是如何通过社交媒体平台获得曝光度和粉丝的,我们将探讨网红背后的营销
AI Power: Complete AI Pack
AI Power is an all-in-one AI solution for WordPress, featuring models like OpenAI’s GPT-4, GPT-3.5, Assistant API, along with Claude, Gemini, Azure, Grok, Mistral, LLaMA, Yi Chat, and Alpaca.It uses o1-mini, o1-preview, G
3D周五孤号走势图近50期带连线
功能类福彩3D显示遗漏:显示/隐藏遗漏值,遗漏值是指自上期开出到本期间隔的期数。福彩3D遗漏分层:是将当前遗漏值用柱状图形标注。福彩3D分段线:是每五期使用分隔线,使横向导航更加清晰。福彩3D显示断区:在分区走势中使用,将开出0个号
2023—2024年度医药健康部分细分领域投资风向扫描
1.医疗器械国产化、高端化趋势明显医疗器械是医药健康行业的重要细分领域,不仅市场规模巨大,而且技术迭代也十分活跃。在行业中,医疗器械又可进一步细分为医疗设备、高值耗材、低值耗材与体外诊断(IVD)四大细分领域。《医疗器械蓝皮书
3D2018年16日连号走势图近500期带连线
功能类福彩3D显示遗漏:显示/隐藏遗漏值,遗漏值是指自上期开出到本期间隔的期数。福彩3D遗漏分层:是将当前遗漏值用柱状图形标注。福彩3D分段线:是每五期使用分隔线,使横向导航更加清晰。福彩3D显示断区:在分区走势中使用,将开出0个号
DataWorks 产品综合评测报告
在大数据时代,高效的数据处理和分析能力对于企业的决策制定、业务优化以及创新发展至关重要。DataWorks作为一款知名的大数据开发治理平台,吸引了众多企业和开发者的关注。本文将从多个角度对DataWorks进行全面评测,旨在为读者提供详实且
2024年618手机选购建议及推荐价格
2024年已经开启,部分机型已经打响价格战,展现出了较高性价比,特别是最近两个月新发布的几款披着中端机皮的千元韭菜机,已陆续回归应有价位,与小编日期推测基本一致。目前不同价位选机推荐(6月1日更新版,括号内为近期已出现或值得入的
5D球幕飞行影院4D环幕动感电影院设备生产厂家
富华智能科技有限公司总公司位于松山湖高新技术产业开发区,广州分公司位于番禺区,是广东省守合同重信用企业, 国家高新技术企业,广州市创新标杆企业。涵盖4D/5D影院、轨道影院,球幕影院,玻璃剧场、台风、地震等自然灾害,禁毒、消防、
相关文章
推荐文章
发表评论
0评