02-urllib-请求头添加与IP代理与handler

这篇具有很好参考价值的文章主要介绍了02-urllib-请求头添加与IP代理与handler。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

第2讲

整体课程知识点查看 :https://blog.csdn.net/j1451284189/article/details/128713764

知识点
urllib请求头添加
urllibIP代理使用
urllib handler相关

一、get传参

1、汉字报错:解释器ASCII码没有汉字,url汉字需转码

urllib.parse.quote(safe = ‘string.printtable’)

2、字典传参

urllib.parse.urlencode(params) #参数转换为url内的形式


def day2_get_params():
    #字典传参相关
    url = 'http://www.baidu.com/s?wd='
    params  = {
        'wd': '中文',
        'key': 'zhang',
        'value': 'san'
    }
    #参数转换为url内的形式
    str_params = urllib.parse.urlencode(params)
    final_url = url+str_params
    print(final_url)
    #将带有中文的URL转译成可识别的
    end_url = urllib.parse.quote(final_url, safe=string.printable)
    response = urllib.request.urlopen(end_url)
    data = response.read().decode('utf-8')
    print(end_url)
    print(data)

二、post请求

urllib.request.urlopen(url,data=‘服务器接收的数据’)

三、请求头信息添加

模拟真实浏览器发生请求 (百度批量搜索)

request = urllib.request.Request(url)  #创建请求对象

request = urllib.request.Request(url,headers=headers)#创建请求对象,并添加请求头
request.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0') #动态添加请求头信息

request_headers = request.headers #获取请求头数据
request_headers = request.headers #获取请求头数据内参数信息
full_url = request.get_full_url()#获取请求的完整的url

request_headers = response.headers #查看响应头信息

def day2_request_header():
    url = 'http://www.baidu.com/'
    #创建请求对象
    request = urllib.request.Request(url)
    #请求网络数据
    response = urllib.request.urlopen(request)
    #获取请求头数据
    print(request.headers)
    #查看响应头信息
    # print(response.headers)
  

def day2_request_header2():
    #添加请求头信息
    url = 'https://www.baidu.com/'
    headers= {
        #浏览器的版本
        'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0'
    }
    # #创建请求对象,并添加请求头
    # request = urllib.request.Request(url,headers=headers)
    #动态添加请求头信息
    request = urllib.request.Request(url)
    request.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:106.0) Gecko/20100101 Firefox/106.0')
    #请求网络数据
    response = urllib.request.urlopen(request)
    #获取请求头数据
    print(request.headers)
    print(request.get_header('User-agent'))#注意,首字母大写,其余均小写,否则返回None
    #获取完整的url
    final_url = request.get_full_url()
    print(final_url)
    #查看响应头信息
    # print(response.headers)
    
def day2_random_agent():
    #随机获取浏览器,
    url = 'http://www.baidu.com/'
    user_agent_list = [
        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.1 (KHTML, like Gecko) Chrome/14.0.835.163 Safari/535.1',
        'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:6.0) Gecko/20100101 Firefox/6.0',
        'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1 Safari/534.50',
        'Opera/9.80 (Windows NT 6.1; U; zh-cn) Presto/2.9.168 Version/11.50',
    ]
    random_user_agent = random.choice(user_agent_list)
    request = urllib.request.Request(url)
    request.add_header('User-Agent', random_user_agent)
    response = urllib.request.urlopen(request)
    print(request.get_header('User-agent'))

四、IP代理

1、免费的IP:时效差,错误性高

2、付费IP:贵花钱,失效

3、IP分类

透明:对方知道我们真实的IP

匿名:对方不知道我们真实IP,知道你使用了代理

高匿:对方不知道我们真实IP,也不知道使用了代理

五、handler原理与代理

系统的urlopen不支持代理的添加,需自己创建handler

创建代理处理器ProxyHandler

使用ProxyHandler创建opener

使用opener调用open方法请求数据文章来源地址https://www.toymoban.com/news/detail-432140.html

#总结
handler = urllib.request.HTTPHandler()#创建自己的处理器
opener = urllib.request.build_opener(handler)#创建自己的openner    
response = opener.open(url)#用自己创建的openner调用open请求数据
#代理的写法 免费与付费的不同
proxy_handler = urllib.request.ProxyHandler(proxy)#创建代理处理器


def day2_handler_opener():
    """自定义urlopen类似功能"""
    #系统的urlopen并没有添加代理功能,需自定义
    #安全套接层 SSL第三方的CA数字证书
    #http 80端口和https 443端口
    # urllib.request.urlopen() 原理 handler处理器  自己的opener请求数据
    url= 'https://blog.csdn.net/jjxp2011/article/details/124546976'
    #创建自己的处理器
    handler = urllib.request.HTTPHandler()
    #创建自己的openner
    opener = urllib.request.build_opener(handler)
    #用自己创建的openner调用open请求数据
    response = opener.open(url)
    data = response.read()
    print(response)
    print(data)
    
def day2_proxy_handler():
    """创建使用代理IP的opener"""
    url = 'https://blog.csdn.net/jjxp2011/article/details/124546976'
    #添加代理
    proxy={
        #免费的写法
        # 'http':'http://120.77.249.46:8080'
        'http': '120.77.249.46:8080'
        #付费代理的写法
        #'http':'xiaoming':123@115
    }
    #代理处理器
    proxy_handler = urllib.request.ProxyHandler(proxy)
    #创建自己opener
    opener = urllib.request.build_opener(proxy_handler)
    #用代理IP请求
    data = opener.open(url).read()
    print(data)
 

def day2_random_proxy():
    """爬虫多代理IP"""
    url = 'https://blog.csdn.net/jjxp2011/article/details/124546976'
    proxy_list = [
        { 'http': '120.77.249.46:8080'},
        { 'http': '18.191.216.4:80'},
        { 'http': '103.123.234.106:8080'},
        { 'http': '41.79.37.74:8585'},
        { 'http': '117.4.115.169:8080'},
        { 'http': '8.242.207.202:8080'},
        { 'http': '103.48.183.113:4145 '},
    ]
    for proxy in proxy_list:
        print(proxy)
        #利用proxy创建handler
        proxy_handler = urllib.request.ProxyHandler(proxy)
        opener = urllib.request.build_opener(proxy_handler)
        try:
            response = opener.open(url,timeout=1)
        except Exception as err:
            print(str(err))

到了这里,关于02-urllib-请求头添加与IP代理与handler的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • nestjs:nginx反向代理服务器后如何获取请求的ip地址

    问题:         如题 参考:         nodejs+nginx获取真实ip-腾讯云开发者社区-腾讯云         「转」从限流谈到伪造 IP nginx remote_addr          解决办法: 1.设置nginx         对于代理部分,对http header添加Host、X-Real-IP、X-Forwarded-For(最重要)          2.nestjs使用

    2024年02月13日
    浏览(57)
  • python爬虫-------urllib代理和代理池(第十七天)

    🎈🎈作者主页: 喔的嘛呀🎈🎈 🎈🎈所属专栏:python爬虫学习🎈🎈 ✨✨谢谢大家捧场,祝屏幕前的小伙伴们每天都有好运相伴左右,一定要天天开心哦!✨✨  嗨嗨嗨,兄弟姐妹们。我是喔的嘛呀。今天的学习内容是:爬虫 urllib代理和代理池 目录 一、爬虫 urllib——代理

    2024年04月14日
    浏览(43)
  • python的网络请求库urllib、urllib2、urllib3、request的联系

    1. 简介 urllib、urllib2、urllib3、request均能通过网络访问互联网上的资源文件,它们通过使用统一资源定位符(URL)并结合re模块完成很多意想不到的操作。 urllib:Python2和Python3内置的网络请求库,Python3的urllib实际是Python2版本中urllib和urllib2的合并 urllib2:它只存在于Python2版本的

    2023年04月14日
    浏览(50)
  • Python 初步了解urllib库:网络请求的利器

    目录 urllib库简介 request模块 parse模块 error模块 response模块 读取响应内容 获取响应状态码 获取响应头部信息 处理重定向 关闭响应 总结 在Python的众多库中,urllib库是一个专门用于处理网络请求的强大工具。urllib库提供了多种方法来打开和读取URLs,从而使得网络数据的获取和

    2024年03月11日
    浏览(38)
  • 5模型机整体的联调【FPGA模型机课程设计】

    2023-5-25 08:15:05 以下内容源自《【FPGA模型机课程设计】》 仅供学习交流使用 0集中实践环节计划书【FPGA模型机课程设计】 第一周周五: 模型机整体的联调。完成模型机指令系统实现。学生根据设计好的指令系统实现方案,在Modelsim上进行功能仿真。要求将所有设计的机器指令

    2024年02月08日
    浏览(40)
  • Python爬虫技术系列-01请求响应获取-urllib库

    参考连接: https://zhuanlan.zhihu.com/p/412408291 1.1.1 urllib简介 Urllib是python内置的一个http请求库,不需要额外的安装。只需要关注请求的链接,参数,提供了强大的解析功能 Urllib库有四个模块:request,error, parse, robotparser request:发起请求(重要) error:处理错误 parse:解析RUL或

    2024年02月07日
    浏览(48)
  • Python3中urllib请求网页报错(AttributeError: module ‘urllib‘ has no attribute ‘request‘)

    报错代码 python3.8,想用urllib库请求访问贴吧,报错代码如下: 报错信息:看到两个request亮着,说明有问题   运行后的报错 报错内容翻译: 属性错误:模块urllib模块没有属性request 报错原因: Python中出现AttributeError的错误主要有两类原因: 1. 没有引入对应正确的包 2. 工程目

    2024年02月15日
    浏览(40)
  • 【spring源码系列-02】通过refresh方法剖析IOC的整体流程

    Spring源码系列整体栏目 内容 链接地址 【一】spring源码整体概述 https://blog.csdn.net/zhenghuishengq/article/details/130940885 【二】通过refresh方法剖析IOC的整体流程 https://blog.csdn.net/zhenghuishengq/article/details/131003428 【三】xml配置文件启动spring时refresh的前置工作 https://blog.csdn.net/zhenghuishen

    2024年02月08日
    浏览(41)
  • Python爬虫 —— urllib库的使用(get/post请求+模拟超时/浏览器)

    爬虫简介 :网络爬虫就是按照一定规则,自动抓取互联网信息的程序或脚本,由于互联网数据的多样性和资源的有限性,根据用户需求定向抓取相关网页并分析就是爬虫要做的工作 为什么我们把它称为爬虫(Spider)嘞?互联网就像是一张大网,而每一个网页就是这张大网上

    2023年04月13日
    浏览(45)
  • (02)Cartographer源码无死角解析-(75) 2D后端优化→整体复盘,理解后端优化核心

    讲解关于slam一系列文章汇总链接:史上最全slam从零开始,针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解:https://blog.csdn.net/weixin_43013761/article/details/127350885   文末正下方中心提供了本人 联系方式, 点击本人照片

    2024年02月13日
    浏览(75)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包