Python爬虫如何设置代理

一些网站会有相应的反爬虫措施,例如很多网站会检测某一段时间某个ip的访问次数,如果访问频率太快以至于看起来不像正常访客,它可能就会会禁止这个ip的访问。所以我们需要设置一些代理服务器,每隔一段时间换一个代理,就算ip被禁止,依然可以换个ip继续爬取。

Python爬虫如何设置代理

Python中,可以使用urllib2中的ProxyHandler来设置使用代理服务器,下面通过代码说明如何来使用代理:

import urllib2# 构建了两个代理Handler,一个有代理IP,一个没有代理IPhttpproxy_handler = urllib2.ProxyHandler({"http" : "124.88.67.81:80"})nullproxy_handler = urllib2.ProxyHandler({})#定义一个代理开关proxySwitch = True # 通过 urllib2.build_opener()方法使用这些代理Handler对象,创建自定义opener对象# 根据代理开关是否打开,使用不同的代理模式if proxySwitch:      opener = urllib2.build_opener(httpproxy_handler)else:    opener = urllib2.build_opener(nullproxy_handler)request = urllib2.Request("http://www.baidu.com/")# 使用opener.open()方法发送请求才使用自定义的代理,而urlopen()则不使用自定义代理。response = opener.open(request)# 就是将opener应用到全局,之后所有的,不管是opener.open()还是urlopen() 发送请求,都将使用自定义代理。# urllib2.install_opener(opener)# response = urlopen(request)print response.read()

登录后复制

上面使用的是免费的开放代理,我们可以在一些代理网站上收集这些免费代理,测试后如果可以用,就把它收集起来用在爬虫上面。

相关推荐:《python视频教程》

立即学习“Python免费学习笔记(深入)”;

免费代理网站:

西刺免费代理

快代理免费代理

全国代理ip

如果你有足够多的代理,可以放在一个列表中,随机选择一个代理去访问网站。如下:

import urllib2import randomproxy_list = [    {"http" : "124.88.67.81:80"},    {"http" : "124.88.67.81:80"},    {"http" : "124.88.67.81:80"},    {"http" : "124.88.67.81:80"},    {"http" : "124.88.67.81:80"}]# 随机选择一个代理proxy = random.choice(proxy_list)# 使用选择的代理构建代理处理器对象httpproxy_handler = urllib2.ProxyHandler(proxy)opener = urllib2.build_opener(httpproxy_handler)request = urllib2.Request("http://www.baidu.com/")response = opener.open(request)print response.read()

登录后复制

上面使用的都是免费代理,不是很稳定,很多时候会出现无法使用的情况,这时候可以考虑使用私密代理。也就是向代理供应商购买代理,供应商会提供一个有效代理,并且有自己的用户名和密码,具体使用和免费代理一样,这是多了一个账户认证,如下:

# 构建具有一个私密代理IP的Handler,其中user为账户,passwd为密码httpproxy_handler = urllib2.ProxyHandler({"http" : "user:passwd@124.88.67.81:80"})

登录后复制

上面就是使用urllib2设置代理的方法,不过看起来有些麻烦,下面我们看看如何使用reqursts来使用代理。

使用免费代理:

import requests# 如果代理需要使用HTTP Basic Auth,可以使用下面这种格式:proxy = { "http": "mr_mao_hacker:sffqry9r@61.158.163.130:16816" }response = requests.get("http://www.baidu.com", proxies = proxy)print response.text

登录后复制

注:可以将账户密码写入环境变量以免泄露

以上就是Python爬虫如何设置代理的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2257896.html

(0)
上一篇 2025年2月27日 03:59:49
下一篇 2025年2月19日 02:43:52

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • 计算机语言有哪三类 计算机语言可分为哪三大类

    计算机语言,用于计算机与人类或计算机之间进行沟通和数据处理的语言,可分为三大类:机器语言、汇编语言和高级语言。机器语言由二进制代码组成,直接受计算机硬件控制,是计算机最底层的语言。汇编语言介于机器语言和高级语言之间,使用助记符来表示机器指令…

    2025年2月27日
    100
  • 什么是计算机语言 什么是高级计算机语言

    计算机语言是指令和规则的集合,使计算机能够理解人类意图。高级计算机语言是高度抽象的语言,使用与人类语言相似的语法,可读性较强。 什么是计算机语言? 计算机语言是一种人与计算机之间交流的媒介。它允许程序员使用计算机可以理解的代码来创建软件应用…

    2025年2月27日
    200
  • python shell如何运行

    python有很多种类的ide。python shell就是安装完python后它自带的编译器,那么它到底在哪里打开? 点击开始菜单栏 在搜索栏输出IDLE,点击IDLE(python***) 相关推荐:《python视频教程》 立即学习“…

    2025年2月27日 编程技术
    200
  • 什么是交互计算机语言 一文了解计算机中交互性的含义

    交互计算机语言是一种编程语言,允许用户与程序进行交互。它提供了即时反馈,使程序员能够根据程序的输出动态调整输入。交互计算机语言的优点包括更高的开发效率、更好的用户体验和更高的可维护性。诸如 Python、JavaScript 和 Bash …

    2025年2月27日
    200
  • python赋值时大小写敏感吗

    python赋值时大小写敏感吗? 举例实践: 如果能区分像myname和Myname这样的标识符,那么它就是区分大小写的。也就是说它很在乎大写和小写。 myname=’Ayushi’print(Myname)Traceback (most …

    2025年2月27日
    200
  • 程序设计语言发展过程分为哪三代?

    文章首段摘要:编程语言的历史可以分为三个主要世代。第一代语言以机器码为主,直接控制计算机硬件。第二代语言,如汇编语言,使用符号和简单的指令,为程序员提供了更高级别的抽象。第三代语言,如 C 和 Java,以人类可读的语法为特色,专注于抽象数…

    2025年2月27日
    200
  • python如何调用api接口

    python调用api接口的方式: 接口协议:http、webservice、rpc等。 请求方式:get、post方式 请求参数格式:   a. get请求都是通过url?param=xxx&param1=xxx   b. pos…

    2025年2月27日
    100
  • python中有栈吗

    在英语词典中,堆(stack)表示将对象放在另一个对象上。 在这个数据结构中分配内存的方式是一样的。 它以类似的方式存储数据元素,类似在厨房中一堆盘子:一个在另一个之上存放。 所以堆栈数据数据允许操作的一端可以称为栈顶。 可在栈顶上添加元素…

    2025年2月27日
    200
  • python字典一个键只能有一个值吗

    python字典一个键只能有一个值吗?下面给大家具体介绍一下一键多值: python中字典可以一键多值,也就是意味着一个键可以对应多个值。 例: #encoding=utf-8 print ‘中国’ #字典的一键多值 print’方案一 l…

    2025年2月27日
    200
  • request timeout是什么意思

    超时(timeout) 为防止服务器不能及时响应,大部分发至外部服务器的请求都应该带着 timeout 参数。在默认情况下,除非显式指定了 timeout 值,requests 是不会自动进行超时处理的。如果没有 timeout,你的代码可…

    2025年2月27日
    200

发表回复

登录后才能评论