Python网络爬虫系列3学习路线

Python爬虫学习路线

掌握基础爬虫模块

使用库: requests, urllib, pycurl, aiohttp,grequests,requests-futures
工具: curl, wget, htpie

深入掌握一个信息提取技术

XPath表达式、BeautifulSoup、PyQuery、正则表达式。
推荐: XPath表达式:+正则表达式。

持久化存储

数据存储: MySQL、MongoDB、Elasticsearch、Kafka

深入掌握抓包分析技术

随着互联网的发展,前端技术也在不断变化,数据的加载方式也不再是单纯的服务端渲染了。目前你可以看到许多网站的数据可能都是通过接口的形式传输的,或者即使不是接口那也是一些 JSON 的数据,然后经过 js 渲染得出来的.许多情况需要分析ajax.

常用: 浏览器开发模式,fiddler, Charles.

掌握模拟浏览器工具

有些网站实在没办法解决,就直接用模拟浏览器的方式来爬取。这样爬取到的源代码就是真正的网页代码,数据自然就好提取了,同时也就绕过分析 Ajax 和一些 Java 逻辑的过程。但效率太慢。

常用: Puppeteer、Pyppeteer、Selenium、Splash

掌握 多进程、多线程、协程

爬虫是 IO 密集型的任务。
多进程、多线程:threading、multiprocessing
异步协程:asyncio, uvloop, aioredis, aiomysql, aiohttp, gevent,tornado 等.

掌握常见的反爬和反爬处理策略

验证码:打码平台(花钱),图片识别引擎(OCR):自己训练深度学习相关的模型,收集数据、标注、训练,针对不同的业务训练不同的模型.例如:tesseract,pytesseract.
IP限制: IP代理池
UA限制: UA代理池
Cookie限制: Cookie保存与处理
资源随机化存储: 自动触发技术
动态加载: 抓包分析+模拟浏览器抓取

分布式爬虫技术

Scrapy 对接 Scrapy-Redis、Scrapy-Redis-BloomFilter 或者用 Scrapy-Cluster 等等。他们都是基于 Redis 来共享爬取队列的,总会多多少少遇到一些内存的问题。

一些人也思考对接到了其他的消息队列上面,列如 RabbitMQ、Kafka 等等,
解决一些问题,效率也不差.

js逆向

这是最难的。。。
前端对一些逻辑或代码进行加密或混淆.如果能够把一些接口的参数真正找出其中的逻辑,用代码来模拟执行,那效率就会有成倍的提升,而且还能在必定程度上规避上述的反爬现象。难。。。

分布式爬虫部署和监控

scrapy框架: Ansible, Scrapyd+ScrapydWeb, 或者Gerapy。以可以Docker + Kubernetes,再加上 DevOps 一套,列如 GitHub Actions、Azure Pipelines、Jenkins 等等,快速实现分发和部署。

定时任务:crontab,apscheduler, Kubernetes

监控:Kubernetes + Prometheus + Grafana

App爬虫

抓包工具: Charles、Fiddler, mitmproxy
hook工具: Xposed
app自动化工具: 安卓原生的 adb, Appium(主流)
逆向工程: IDA Pro、jdax、FRIDA

可能还有就是智能化,自己训练机器人

总结

爬虫往往学着学着,就成为了一名全栈工程师或者全干工程师。苦逼。。。
涵盖的东西太多了: 计算机网络、编程基础、前端开发、后端开发、App 开发与逆向、网络安全、数据库、运维、机器学习…

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
龙辉的头像 - 鹿快
评论 抢沙发

请登录后发表评论

    暂无评论内容