Python爬虫开发基本知识点
概述:自动化的从网络中(网页或者app等客户端)获取数据,并保存起来的程序.
***理论上,一切可以浏览看到的数据都可以获取到.
***本质:发送正确的请求,获取想要响应。
**概述爬虫开发过程:
一,目标站点分析,准备阶段的注意事项:
- 检查网站根目录下/robots.txt中君子协议的说明
如果没有robots文件,则默认网站数据允许采集
哪些目录数据可以采集,哪些不允许,否则牵扯到商业性数据他用时,有法律纠纷从该出核定。
关于robots.txt文件:文档尾部详细说明。
2,从robots.txt文件中分析网站地图
即各分类网址,但要注意有些数据不完整;
初步查看网站拥有者,域名注册者。
3,初步分析网站或app采用的页面技术
借用浏览器开发者工具或抓包工具查看数据显示,分析页面框架技术,静态还是动态。
4,估计数据量的大小,以备后期选用数据库的选型。
二,尝试突破
- 首先用相对简单快速的工具,探索突破网站需要的验证
谷歌浏览器开发者工具;
Postman软件测试获取数据;
app尝试用fiddler手机代理测试;
2,requests模块编写简单脚本
- 分析突破网站的技术难点,以数据完整度为前提,首选web采集,其次APP端。
- 逐个突破技术难点,暂时突破不了的选用其他采集途径。
- 常见的反爬机制:
- 封ip----ip代理解决;
- 验证码:打码平台或自己封装图片识别方法;
- Js加密:截图识别或破解js加密;
- UA,cookie,模板等常见反爬;
- APP端验证签名机制:查找git破解算法的,或自行利用安卓逆向技术破解其对应算法,并将算法编写本地c语言的so库文件,来突破验签。
三,突破后,准备正式框架采集,提高效率,做好反爬策略
- 选用爬虫框架,scrapy,分布式,redis技术点,编写爬虫脚本;
- 考虑是否并行采集,提高采集效率,多线程、多进程或协程;
- 调整爬虫代码逻辑;
- 根据数据量和数据格式选用数据库HBase\Mongodb\mysql;
- 选用高效的ip代理;