urllib.request.urlopen(url)   不能定制请求头
urllib.request.Request(url,headers,data)  可以定制请求头
Handler
定制更高级的请求头(随着业务逻辑的复杂 请求对象的定制已经满足不了我们的需求(动态cookie和代理
不能使用请求对象的定制)
# 需求 使用handler来访问百度  获取网页源码

import urllib.request
# 请求路径
url = 'http://www.baidu.com'
# 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
}

# 请求对象的定制
request = urllib.request.Request(url = url,headers = headers) # handler build_opener open # (1)获取hanlder对象
handler = urllib.request.HTTPHandler() # (2)获取opener对象(通过上面hanlder获取opener对象)
opener = urllib.request.build_opener(handler) # (3) 调用open方法(参数传入request请求对象)
response = opener.open(request)
# 获取响应数据(read读方法返回字节形式二进制数据.decode解密)
content = response.read().decode('utf-8')
print(content)
代理服务器
1.代理的常用功能?
  • 突破自身IP访问限制,访问国外站点。
  • 访问一些单位或团体内部资源

    扩展:某大学FTP(前提是该代理地址在该资源的允许访问范围之内),使用教育网内地址段免费代理服务器,就可以用于对教育网开放的各类FTP下载上传,以及各类资料查询共享等服务。

  • 提高访问速度

    扩展:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。

  • 隐藏真实IP
    扩展:上网者也可以通过这种方法隐藏自己的IP,免受攻击。
2.代码配置代理
  创建Reuqest对象
  创建ProxyHandler对象
  用handler对象创建opener对象
  使用opener.open函数发送请求
 

访问api返回,ip地址

import urllib.request

# 随机函数
import random # 西刺免费代理IP(http://www.xicidaili.com/)
# ip代理池,列表
proxies_pool = [
{'http':'118.24.219.151:16817'},
{'http':'118.24.218.158:16817'}
# ...
] # random.choice方法返回一个列表,元组或字符串的随机项
proxies = random.choice(proxies_pool)
# 请求路径
url = 'http://www.baidu.com/s?wd=ip' # 请求头
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.159 Safari/537.36'
} # 请求对象的定制
request = urllib.request.Request(url = url, headers = headers) # 设置使用代理服务器,传入ip
handler = urllib.request.ProxyHandler(proxies=proxies) #通过 urllib.request.build_opener(代理服务器)方法创建支持处理HTTP请求的opener对象
opener = urllib.request.build_opener(handler) # 通过opener对象.调用open()方法发送请求
response = opener.open(request) # 获取响应信息
content = response.read().decode('utf-8') # 保存到本地
with open('daili.html','w',encoding='utf-8')as fp:
fp.write(content)

Handler处理器&&使用代理服务器urllib.request.ProxyHandler的更多相关文章

  1. urllib.request ProxyHandler

    import urllib.request proxy_support = urllib.request.ProxyHandler({}) opener = urllib.request.build_ ...

  2. 爬虫——Handler处理器 和 自定义Opener

    我们之前一直都在使用的urlopen,这是一个特殊的opener(也就是模块帮我们构建好的). 但是基本的urlopen()方法不支持代理.cookie等其他的HTTP/HTTPS高级功能.所以要支持 ...

  3. python爬虫(3)——SSL证书与Handler处理器

    一.SSL证书问题 上一篇文章,我们创建了一个小爬虫,下载了上海链家房产的几个网页.实际上我们在使用urllib联网的过程中,会遇到证书访问受限的问题. 处理HTTPS请求SSL证书验证,如果SSL证 ...

  4. 爬虫(GET)——handler处理器和自定义opener

    工具:python3 解释:urlopen()不支持代理.cookie等其他的http/https高级功能,所以需要handler处理器创建特定功能的处理器对象,urllib.request.buli ...

  5. 【转】python3 urllib.request 网络请求操作

    python3 urllib.request 网络请求操作 基本的网络请求示例 ''' Created on 2014年4月22日 @author: dev.keke@gmail.com ''' im ...

  6. Python Spider - urllib.request

    import urllib.request import urllib.parse import json proxy_support = urllib.request.ProxyHandler({' ...

  7. python3 urllib.request 网络请求操作

    python3 urllib.request 网络请求操作 基本的网络请求示例 ''' Created on 2014年4月22日 @author: dev.keke@gmail.com ''' im ...

  8. python urllib.request

    一.简介 urllib.request 模块提供了访问 URL 的相关功能 二.常用函数 urllib.request.urlopen("http://httpbin.org", ...

  9. urllib.request中Handler处理器

    1.定义 自定义的urlopen()方法,urlopen()方法是一个特殊的opener(模块已定义好),不支持代理等功能,通过Handler处理器对象来自定义opener对象 2.常用方法 1.bu ...

随机推荐

  1. 浏览器输入URL之后,HTTP请求返回的完整过程

    1.输入url,按下回车时,先做一个redirect(重定向),因为浏览器可能记录本机的地址已经永久跳转成新的地址,所以一开始浏览器就先要判断下需不需要重定向,以及重定向到哪里:2.然后第二步就是看A ...

  2. Java 使用 Socket 实现客户端和服务器的信息交互

    服务器 public class Server{ private ServerSocket serverSocket; private Socket socket; private BufferedR ...

  3. Snipaste屏幕截图的使用

    什么是Snipaste Snipaste是一款屏幕截图软件 类似于微信的截图 Snipaste使用步骤 百度搜索Snipaste 如图 点击 根据自己电脑系统选择安装 下载完成后 解压到当前文件夹 点 ...

  4. SpringBoot如何实现定时任务

    写在前面 SpringBoot创建定时任务的方式很简单,主要有两种方式:一.基于注解的方式(@Scheduled)二.数据库动态配置.实际开发中,第一种需要在代码中写死表达式,如果修改起来,又得重启会 ...

  5. Mysql读写分离集群的搭建且与MyCat进行整合

    1. 概述 老话说的好:不熟悉的东西不要不懂装懂,做人要坦诚,知道就是知道,不知道就是不知道. 言归正传,今天我们来聊聊 Mysql主从读写分离集群是如何搭建的,并且聊一下如何用 MyCat 去访问这 ...

  6. 常用SQL函数大全

    数学函数 mod(x,y) 返回x/y的模(余数)mod(5,3)=2,mod(3,5)=3 floor(x)   返回小于x的最大整数值ceiling(3)=3,ceiling(3.1)=3 cei ...

  7. 一个小众搞笑的xss漏洞练习平台

    XSS是当今网络安全事件中数量最多的攻击方式,虽然其危害性不高,但主要和其他攻击手段相结合,以实现一个复杂的攻击场景.那么,XSS是什么? XSS全称跨站脚本(Cross Site Scripting ...

  8. 《手把手教你》系列技巧篇(三十三)-java+ selenium自动化测试-单选和多选按钮操作-上篇(详解教程)

    1.简介 在实际自动化测试过程中,我们同样也避免不了会遇到单选和多选的测试,特别是调查问卷或者是答题系统中会经常碰到.因此宏哥在这里直接分享和介绍一下,希望小伙伴或者童鞋们在以后工作中遇到可以有所帮助 ...

  9. 安卓开发——WebView+Recyclerview文章详情页,解决高度问题

    安卓开发--WebView+Recyclerview文章详情页,解决高度问题 最近在写一个APP时,需要显示文章详情页,准备使用WebView和RecyclerView实现上面文章,下面评论.出现了W ...

  10. Python使用阿里云OSS服务

    Python使用阿里云OSS服务 前言: 在远程搭建了一个平台,通过改远程平台进行数据的采集,需要将数据内容传送至本地进行处理:为了实现该功能,考虑了阿里云的OSS对象储存的服务. 40G包月只需1元 ...