51zxw发布了一个新课程,是今年二月份的,现在总算是辞职空下来时间了,想着学习下爬虫吧,反正学了也不亏。爬虫算是最简单的东西了,爬虫背靠数据挖掘、数据分析和机器学习,与大数据和AI相比显得没那么高大上,随便一个程序员都能写一个的小爬虫。可是,在数据封锁隐藏,反爬机制不断深入的今天,如何设计爬虫分布式运行架构、有效高匿的代理池、反封号防屏蔽、清洗存储有效数据、优化爬取策略、结合大数据技术,更有效率有质量地获取数据等等云云,也不是看似那么简单。因为当今世纪,数据即是一切,小小爬虫,一定程度上成为了可用信息的源头,这就是爬虫存在的意义。
工欲善其事必先利其器,自学网老师示例用的是sublime,但是接近年底,packge-control因为某些(河蟹)因素暂停了服务(也可能是白嫖的人太多了 ..迫真),之前写selenium又一直用的pycharm,索性就接着用吧。。,配置下Anaconda解释器,完事开干。
爬虫 本质上来讲 就是做一个模拟浏览器的工作。从最开始的模拟浏览器发 HTTP 请求,发 WebSocket 请求,到后面的模拟浏览器编译 js,其实做的都是一件事情。
简单反爬机制
1.请求头验证 User-Agent、Cookie、 Referer
请求头和跳转源是第一层反爬保护,模拟user-agent不同浏览器、客户端的http请求头,添加referer标签模拟跳转源
2.ip 限制 高匿ip代理、自建ip池(ADSL拨号每次也会分配不同ip),ip访问频率设置
验证机器还是人的操作,同一ip多次高频会被永久封禁
3.登陆验证限制
文字选择、划线、图片拖动、结合语义识别(或设置识别线),cookie,OCR,pytesseract,selenium模拟操作,手动输入验证码?。。网络爬人?
4.非静态页 JS混淆加密,Ajax异步加载
哦shit,js反爬,一般两种思路,python重写js内容或execjs第三方库解析js。oh shit 后面在学吧,文字替换,js混淆,加密算法相关知识太多了,好在得慢慢学,还有无头浏览器+selenium有奇效 bingo >__<