爬虫的具体介绍就不说了,这里想对自己多年的爬虫中遇到的情况进行一个总结
1.模拟浏览器
2.Ip
3.登录
4.验证码
5.各种信息加密
6.请求频率
1.模拟浏览器
- 目前度娘一搜一大把,最集中的就是ua了,搭建一个随机ua池,不断的变化ua,很普遍的方法, 这里推荐一个大神写的开源库 fake-useragent https://github.com/hellysmile/fake-useragent 简单好用
- 防盗链,抓取图片经常会遇到,最简单的方式就是获取其Referrer,放到自己的 headers 中,具体自行度娘
- cookie,这是一个最常见的反爬手段之一了,可以把它和登录放在一起。有些不需要登录的网站也会通过cookie来过滤一些没有经过伪装的爬虫,有些网站会在cookie中加入时间戳,然后加密。这些网站服务器会根据cookie设置过期时间;so,我们需要一个cookie池了,使用requests会很方便的搭建一个cookie池,当然了,强烈推荐requests大神的新作 requests-html,可以执行js,自己翻页什么的(偶像)
- 其他一些参数,请求头是反爬虫的重要手段和常用伎俩之一,我们如果发现数据没有,或者有问题,一定一定注意一些,通过抓包仔细分析
2.ip,请求频繁
- 很多新手或者某些人为了利益,制造很多的暴力爬虫(不限速,高并发请求),这会造成对方服务器压力巨大,甚至是死机,建议大家在练习或者工作的时候;养成良好的习惯,这是相互的过程,如果你很良好的请求。对方服务器没那么大压力,他的一些不那么重要的数据还是会很开心的让你访问的
- 其实代理ip很简单,requests, scrapy都有自己的方法来设置,网上也有很多的免费(西刺免费代理),付费代理(阿布云)等等,代理是没有办法的办法,毕竟我们自己的ip才是速度最快的,如果真的需要频繁更换代理Ip,建议搭建一个自己的代理ip池,定时监测,删除。
3.登录
- 可以用requests模拟登录,网上有很多,一般登录之后,保存cookie就可以了;当然注意我上面说的cookie过期时间,如果嫌麻烦,登录最常用的就是selenium了,简单快捷
4.验证码
- 网上打码平台很多,也有详细的API,如果嫌麻烦,当然还是首选selenium(万金油),不过selenium会降低抓取的速度,请大家根据需要进行选择
5.信息加密
- 这类数据多用在一些核心的信息(价格,电话,图片等),有的使用js包裹,有的使用加密函数(sha,bas64,md5等等)
- 加密数据的典型就是某8同城了,它的价格可以看到,拿到是乱码一样的东西(生僻字?)。通过抓包,会发现它有一个自己的字符编码。然后还有解密什么的,度娘有人写过
总结:
- 简单总结了我遇到的一些基本反爬手段,当然实际运用中会有各种意想不到的情况。数据是未来的一个基础。反爬工程师会越来越精明。采集数据难度也会越来越大,当然如果我们合理运用;不对对方造成压力,对方还是会网开一面的(核心数据除外)这里推荐我学习的资料, 崔大大的爬虫书(python3网路爬虫开发实战)python核心3,还有一些视频:传智播客,慕课网的爬虫视频。. 一些学习网站:实验楼,菜鸟教程,w3cSchool,廖雪峰廖大大的官网,当然还有我们的度娘
- 总结,回顾,不断的学习。才可以有更好的进步