python爬虫:关于反爬虫几种方式!看看这篇文章就够了[Python基础]
本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理
1
写在前面的话
之前给大家写了那么多的爬虫案例,今天来给大家讲讲大部分网站反爬虫的一些措施以及我们如何去突破他们得反爬虫!当然这次有点标题党,技术是日益进步的,反爬虫技术也是如此,所以看这一篇文章当然是不够的,这个也需要大家后期的不断进阶学习(JAP君也是),废话不多说了!直接进入主题吧!
2
有些啥反爬虫措施?
其实我们写爬虫最头疼的事情就是反爬虫措施了,我们想要去突破它,必然要先充分了解它们。我们来看下到底有哪些反爬虫措施吧!
最常见的基于Headers的反爬虫:相信这个大家应该都是耳熟能详的,我们每次写爬虫基本上都会写headers,因为大部分的网站都会对Headers中的User-Agent以及Referer字段进行检测。这个突破起来应该是比较容易的,我们直接根据浏览器正常访问时的请求头对爬虫的请求头进行修改,和浏览器的相同即可。
headers = {‘User-Agent’:"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36} rs=requests.get(‘http://jianshu.com’)
根据用户行为的反爬虫:这个反爬虫措施真的是让人头疼,具体是啥呢?举个栗子,同一个IP短时间内频繁的去访问同一个页面,或者你就是对网站有一些程序化的操作(固定时间间隔去访问页面)更加接地气的说就是看起来不像是正常人类在操作。这个问题怎么去解决呢?①既然一个ip不能频繁访问,那我就弄一大堆ip不就行了,所以我们可以通过大量的ip代理进行绕过。②我们访问的时候可以将间隔的时间换成一个随机的数字,尽可能的去模仿正常人的操作。
proxies = { "http": "http://127.0.0.1:8888", "https": "http://127.0.0.11:1080",}
requests.get(url, proxies
=proxies)
- 基于验证码的反爬虫:其实验证码也是一种反爬虫的措施,现在的验证码相信大家也都见识过了,什么算数啊,滑动啊,按照顺序点击字啊等等,千奇百怪,其实像这种验证码的防爬虫措施是有点棘手的,这里的话几句话也说不完(涉及到机器学习或者也可以使用打码平台),大家可以先了解一下这种反爬虫措施,到时候我会写一篇有关于突破验证码的文章。
- 动态页面的反爬虫:这种技术应该还是比较常见的,动态页面是啥呢?像我们在html上抓取数据,那是属于静态页面的数据,非常的简单。但是想动态页面的话就无法直接从页面上获取数据,而是会涉及到Ajax技术,所以我们需要分析Ajax请求,然后模拟发送获取到数据,但是目前很多网站不会那么轻易的让你模拟发送数据出去,所以目前我们需要通过selenium+phaantomJS技术来进行突破!这个我们日后会讲。
- 基于登录的反爬虫:像有些网站就比较抠了,必须要注册登录之后才能看到里面的内容,所以这也是个问题,但是这个也并不是特别难,只要你有足够的耐心多去注册几个账号,然后去登录获取到它们的cookie,然后通过这些cookie去访问登录即可
3
总结
上面的大概就是目前很常见的一些反爬虫措施,我在上面也提供了一些解决的方法和思路,当然每个网站的爬取是不一样的,这也是爬虫最吸引人的地方,不断地给我们挑战,我们也需要不断地去突破它,所以大家可以通过上面的一些方法去突破这些限制,当然技术肯定不止仅限于我所讲的。我也只是提供一些大众的思维。
以上是 python爬虫:关于反爬虫几种方式!看看这篇文章就够了[Python基础] 的全部内容, 来源链接: utcz.com/z/530895.html