python3下urllib.request库高级应用之ProxyHandler处理器(代理设置)

1. 代理简介

  很多网站都会检测某一段时间某个IP的访问次数,如果同一个IP访问过于频繁,那么该网站就会禁止来自该IP的访问,针对这种情况,可以使用代理服务器,每隔一段时间换一个马甲。“他强任他强,劳资会变翔”哈哈哈。

  免费的开放代理获取无成本,我们可以收集这些免费代理,测试后如果可以用,用在爬虫上。

  免费短期代理网站举例:

名词解释:

免费短期代理网站分高匿和透明

【高匿】:代表服务器追踪不到你原来的IP;

【透明】:代表服务器可以追踪到你的代理IP和原来的IP;

类型表示支持的类型:HTTP或者HTTPS

【存活的时间】:表示在这个期间可用

2.设置代理服务器

urllib.request中通过ProxyHandler来设置使用代理服务器,下面代码说明如何使用自定义opener来使用代理:

例子1:单个代理IP

 1 import urllib.request
 2
 3 # 构建两个代理Handler,一个有代理IP,一个没有
 4 httpproxy_handler = urllib.request.ProxyHandler({"http": "211.141.111.114:61395"})
 5 nullproxy_handler = urllib.request.ProxyHandler({})
 6 proxy_switch = True  # 定义一个代理开关
 7
 8 # 通过urllib.request.build_opener() 方法创建自定义opener对象
 9 # 根据代理开关是否打开,使用不同的代理模式
10 if proxy_switch:
11     opener = urllib.request.build_opener(httpproxy_handler)
12 else:
13     opener = urllib.request.build_opener(nullproxy_handler)
14
15 request = urllib.request.Request("http://www.baidu.com")
16 response = opener.open(request)
17 print(response.read())

  注意:

  如果程序中所有的请求都使用自定义的opener, 可以使用urllib.install_opener()将自定义的opener定义为全局opener,表示之后凡是调用urlopen,都将使用自定义的opener。

例子2:代理IP列表随机抽取

如果代理IP足够多,就可以像随机获取User-Agent一样,随机选择一个代理去访问网站。

 1 import urllib.request
 2 import random
 3
 4 proxy_list = [
 5     {"http": "211.141.111.114:61395"},
 6     {"http": "61.135.217.7:80"},
 7     {"http": "171.39.74.97:8123"},
 8     {"http": "218.59.228.18:61976"},
 9     {"http": "221.224.136.211:35101"},
10 ]
11
12 # 随机选择一个代理
13 proxy = random.choice(proxy_list)
14
15 # 使用选择的代理构建代理处理器对象
16 httpproxy_handler = urllib.request.ProxyHandler(proxy)
17 opener = urllib.request.build_opener(httpproxy_handler)
18 request = urllib.request.Request("http://www.baidu.com")
19 response = opener.open(request)
20 print(response.read())

这些免费开放代理一般会有很多人都在使用,而且代理有寿命短,速度慢,匿名度不高,HTTP/HTTPS支持不稳定等缺点(免费没好货)。

所以,专业爬虫工程师或爬虫公司会使用高品质的私密代理,这些代理通常需要找专门的代理供应商购买,再通过用户名/密码授权使用。

原文地址:https://www.cnblogs.com/liangmingshen/p/9964202.html

时间: 2024-10-17 09:27:34

python3下urllib.request库高级应用之ProxyHandler处理器(代理设置)的相关文章

Python3 urllib.request库的基本使用

urllib.request库 是 Python3 自带的模块(不需要下载,导入即可使用)python 自带的模块库文件都是在C:\Python\Lib目录下(C:\Python是我Python的安装目录),python第三方模块库都是在C:\Python\Lib\site-packages 下.urllib.request库在windows下的路径(C:\Python\Lib\urllib). 一:用urllib.request 里的urlopen()方法发送一个请求 import urlli

python3中urllib.request.urlopen.read读取的网页格式问题

#!/usr/bin/env python3 #-*- coding: utf-8 -*- #<a title="" target="_blank" href="http://blog.sina.com.cn/s/blog_4701280b0102eo83.html"><论电影的七个元素>——关于我对电…</a> import urllib.request str0 =r' <a title="

通过python的urllib.request库来爬取一只猫

我们实验的网站很简单,就是一个关于猫的图片的网站:http://placekitten.com 代码如下: import urllib.request respond = urllib.request.urlopen("http://placekitten.com.s3.amazonaws.com/homepage-samples/200/287.jpg") cat_img = respond.read() f = open('cat_200_300.jpg','wb') f.writ

python3 request 库

request库 虽然Python的标准库中 urllib.request 模块已经包含了平常我们使用的大多数功能,但是它的 API 使用起来让人感觉不太好,而 Requests 自称 "HTTP for Humans",说明使用更简洁方便. Requests 唯一的一个非转基因的 Python HTTP 库,人类可以安全享用. Requests 继承了urllib2的所有特性.Requests支持HTTP连接保持和连接池,支持使用cookie保持会话,支持文件上传,支持自动确定响应内

Python3中urllib详细使用方法(header,代理,超时,认证,异常处理) 转载

urllib是python的一个获取url(Uniform Resource Locators,统一资源定址器)了,我们可以利用它来抓取远程的数据进行保存哦,下面整理了一些关于urllib使用中的一些关于header,代理,超时,认证,异常处理处理方法,下面一起来看看. python3 抓取网页资源的 N 种方法 1.最简单 import urllib.requestresponse = urllib.request.urlopen('http://python.org/')html = res

【Python】python3中urllib爬虫开发

以下是三种方法 ①First Method 最简单的方法 ②添加data,http header 使用Request对象 ③CookieJar import urllib.request from http import cookiejar url ='http://www.baidu.com' print("First Method") response1 = urllib.request.urlopen(url) #返回状态码 print(response1.getcode())

2. Python标准库urllib.request模块_2(python3)

参考学习地址:http://www.iplaypython.com # coding:utf-8 # 学习1 import urllib.request # print(dir(html)) # 获取网页所在的header信息 url="http://www.iplaypython.com/" html=urllib.request.urlopen(url) # 获取网站返回的状态码 code = html.getcode() print("返回的状态码: %s"

Urllib.request用法简单介绍(Python3.3)

Urllib.request用法简单介绍(Python3.3),有需要的朋友可以参考下. urllib是Python标准库的一部分,包含urllib.request,urllib.error,urllib.parse,urlli.robotparser四个子模块,这里主要介绍urllib.request的一些简单用法. 首先是urlopen函数,用于打开一个URL: # -*- coding:utf-8 -*- #获取并打印google首页的htmlimport urllib.requestre

在python3中使用urllib.request编写简单的网络爬虫

Python官方提供了用于编写网络爬虫的包 urllib.request, 我们主要用它进行打开url,读取url里面的内容,下载里面的图片. 分以下几步: step1:用urllib.request.urlopen打开目标网站 step2:由于urllib.request.urlopen返回的是一个http.client.HTTPResponse object,无法直接读取里面的内容,所以直接调用该对象的方法read(),获取到页面代码,存到html里 step3:构建正则表达式,从页面代码里