爬虫入门经典(六) |
您所在的位置:网站首页 › 爬虫为什么会坐牢的原因呢 › 爬虫入门经典(六) |
大家好,我是不温卜火,是一名计算机学院大数据专业大三的学生,昵称来源于成语—不温不火,本意是希望自己性情温和。作为一名互联网行业的小白,博主写博客一方面是为了记录自己的学习过程,另一方面是总结自己所犯的错误希望能够帮助到很多和自己一样处于起步阶段的萌新。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://buwenbuhuo.blog.csdn.net/。 PS:由于现在越来越多的人未经本人同意直接爬取博主本人文章,博主在此特别声明:未经本人允许,禁止转载!!! 特此声明:博主在本片博文的第一部分引用借鉴的程序猿果果《爬虫为什么要使用代理IP》这篇文章,感兴趣的同学可以看下。 目录 推荐一、为什么使用代理IP1、基本原理2、代理的作用 二、如何使用代理IP三、自动提取代理
♥欢迎大家关注公众号【不温卜火】,关注公众号即可以提前阅读又可以获取各种干货哦,同时公众号每满1024及1024倍数则会抽奖赠送机械键盘一份+IT书籍1份哟~♥ 我们在做爬虫的过程中经常会遇到以下情况,最初爬虫正常运行,正常抓取数据,一切看起来都是那么美好,然而一杯茶的功夫可能就会出现错误,比如403 Forbidden,可能会看到“您的IP访问频率太高”这样的提示。出现这种现象的原因是网站采取了一些反爬虫措施。比如,服务器会检测某个IP在单位时间内的请求次数,如果超过了这个阈值,就会直接拒绝服务,返回一些错误信息,这种情况可以称为封IP。 既然服务器检测的是某个IP单位时间的请求次数,那么借助某种方式来伪装我们的IP,让服务器识别不出是由我们本机发起的请求,不就可以成功防止封IP了吗? 这个时候就用到代理IP了,说到代理IP下面就需要先基本原理、代理的作用。 1、基本原理代理实际上指的就是代理服务器,英文叫作proxy server,它的功能是代理网络用户去取得网络信息。形象地说,它是网络信息的中转站。在我们正常请求一个网站时,是发送了请求给Web服务器,Web服务器把响应传回给我们。如果设置了代理服务器,实际上就是在本机和服务器之间搭建了一个桥,此时本机不是直接向Web服务器发起请求,而是向代理服务器发出请求,请求会发送给代理服务器,然后由代理服务器再发送给Web服务器,接着由代理服务器再把Web服务器返回的响应转发给本机。这样我们同样可以正常访问网页,但这个过程中Web服务器识别出的真实IP就不再是我们本机的IP了,就成功实现了IP伪装,这就是代理的基本原理。
一提到使用代理IP ,就不得不说是使用免费IP还是花钱使用高匿代理。这个东西主要还是看个人了,如果对ip要求不高,你可以选择使用网上免费的开放代理,自己建一个程序维护一个ip池,爬取一些代理网站的免费ip,加一道测试程序,如果测试可以用,就把它收集起来供爬虫使用。不过免费代理可用率实在是太低,而且不是很稳定,经常会失效,条件允许的话强烈建议花点钱选择收费的私密代理。 PS:经常使用的西刺代理已经挂掉了,打开网页之后,我们会发现已经无法访问了 下面通过代码进行实现: # encoding: utf-8 ''' @author 李华鑫 @create 2020-10-06 15:57 Mycsdn:https://buwenbuhuo.blog.csdn.net/ @contact: [email protected] @software: Pycharm @file: 代理ip.py @Version:1.0 ''' import requests proxies = { "https":"https://58.218.200.247:9934" } response = requests.request(method="get",url="https://httpbin.org/get",proxies=proxies) print(response.text)
上述代码虽然已经实现代理IP的作用,但是我们想想,如果这个IP被网站封了以后,我们再次手动刷新会不会很麻烦,既然这样,我们能不能让其能够自动提取代理呢?话不多说,开整。 想要实现自动提取代理,我们首先需要对生成的链接进行分析: 我们先通过多次刷新 发现我们刷新页面需要等待3秒钟,否则将会获取失败 这是我们看下结果,是不是我们想要的: 🆗,完美! 分析完成,下面看下最终代码及效果图: #!/usr/bin/env python # encoding: utf-8 ''' @author 李华鑫 @create 2020-10-06 16:31 Mycsdn:https://buwenbuhuo.blog.csdn.net/ @contact: [email protected] @software: Pycharm @file: 自动提取代理.py @Version:1.0 ''' import requests import time def get_proxies(): #这里获取的芝麻HTTP代理http https\\ time.sleep(3) proxies = { "http": "", "https": "" } response = requests.get("http://http.tiqu.alicdns.com/getip3?num=1&type=2&pro=&city=0&yys=0&port=11&time=1&ts=0&ys=0&cs=1&lb=1&sb=0&pb=45&mr=2®ions=") content = response.json() print(content) proxies["https"] = content["data"][0]["ip"]+":"+str(content["data"][0]["port"]) print(proxies) return proxies proxies = get_proxies() response = requests.request(method="get",url="https://httpbin.org/get",proxies=proxies) print(response.text)
好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。 如果我的博客对你有帮助、如果你喜欢我的博客内容,请“点赞” “评论”“收藏”一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。 码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注我哦!
|
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |