Python3 urllib库学习

【踩坑日记3】NewConnectionError(‘<urllib3.connection.HTTPSConnection object at 0x7fcadb7b0430>: Failed to 代码涉及到huggingface的模型,但是服务器没有VPN。将模型下载至服务器中。 阅读详情

python3将python2的urllib和urllib2库整合为一个urllib库,由于近期用到了这个库就参考官方文档和网上的资料总结了一下
导入

import urllib

urllib.request

urllib.request.urlopen()

发起一个请求

response = urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) 
# url 要打开的网址,可以是字符串或者是request对象
# data 要发送给服务器的数据(POST方法)
# timeout 网站的访问超时时间,单位为s
# cafile和capath 用于HTTPS请求中,设置CA证书及其路径

返回对象提供的方法

  •     read() , readline() ,readlines() , fileno() , close() :对HTTPResponse类型数据进行操作
    
  •     info():返回HTTPMessage对象,表示远程服务器返回的头信息
    
  •     getcode():返回Http状态码。如果是http请求,200请求成功完成;404网址未找到
    
  •     geturl():返回请求的url
    

返回对象的属性
对于HTTP 和 HTTPS请求

  • status 返回状态码
  • reason 返回状态的详细信息

urllib.request.Request()

使用该方法来返回一个request对象

request = urllib.request.Request(url, data=None, headers={}, origin_req_host=None, unverifiable=False, method=None)
# url 包含网址的字符串
# data 要发送给服务器的数据对象,对于POST请求,要通过urllib.parse.urlencode() 方法进行编码
# header 头部信息,必须为字典类型
# method 请求方法,如果data为None则为GET,否则为POST

头部信息示例

headers = {
     'User-Agent': r'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) '
                   r'Chrome/45.0.2454.85 Safari/537.36 115Browser/6.0.3',
     'Referer': r'http://www.lagou.com/zhaopin/Python/?labelWords=label',
     'Connection': 'keep-alive'
  }
  •     User-Agent :这个头部可以携带如下几条信息:浏览器名和版本号、操作系统名和版本号、默认语言
    
  •     Referer:可以用来防止盗链,有一些网站图片显示来源http://***.com,就是检查Referer来鉴定的
    
  •     Connection:表示连接状态,记录Session的状态。
    

也可以通过返回的request对象的 add_header(key, val) 方法来添加header信息

request.add_header('Origin', 'https://passport.weibo.cn')
request.add_header('User-Agent', 'Mozilla/6.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/8.0 Mobile/10A5376e Safari/8536.25')
request.add_header('Referer', 'https://passport.weibo.cn/signin/login?entry=mweibo&res=wel&wm=3349&r=http%3A%2F%2Fm.weibo.cn%2F')

urllib.request.ProxyHandler()

使用同一个IP去爬取同一个网站上的网页,久了之后会被该网站服务器屏蔽。使用代理服务器。 (使用代理服务器去爬取某个网站的内容的时候,在对方的网站上,显示的不是我们真实的IP地址,而是代理服务器的IP地址)

urllib.request.ProxyHandler(proxies=None)
data = {
        'name': 'zjw',
        'age': 23,
        'gender': 'male'
    }
proxy = request.ProxyHandler({'http': '5.22.195.215:80'})  # 设置proxy
opener = request.build_opener(proxy)  # 挂载opener
request.install_opener(opener)  # 安装opener
data = parse.urlencode(data).encode('utf-8')
page = opener.open(url, data).read()
page = page.decode('utf-8')
return page

urllib.request.urlretrieve()

将远程数据下载到本地,例如下载图片

urllib.request.urlretrieve(url, filename=None, reporthook=None, data=None)
#返回由文件名及头部信息组成的元组(filename, headers)
#url 远程数据的地址
#filename 保存文件的路径,如果为空,则下载为临时文件
#reporthook 钩子函数 连接服务器成功以及每个数据块下载完成时各调用一次,包含3个参数,依次为已经下载的数据块,数据块的大小,总文件的大小,可用于显示下载进度
#data post到服务器的数据   

urllib.parse

urllib.parse.urlencode()

将包含字符串或字节内容的映射对象或二维元组序列转换为ASCII文本字符

urllib.parse.urlencode(query, doseq=False, safe='', encoding=None, errors=None, quote_via=quote_plus)

其转换结果用于POST操作时,还需将其编码为字节

data = {
    'name': 'zjw',
    'age': 23,
    'gender': 'male'
}
data = urllib.parse.urlencode(data).encode('utf-8')
#经编码后结果为 b'name=zjw&age=23&gender=male'
#返回结果需解码
response = request.urlopen(url, data=data).read().decode('utf-8')

urllib.parse.parse_qs()

将返回的query字符串转换为字典

urllib.parse.parse_qs(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')
# 例如 {b'name':[b'zjw'],b'age':[b'23'],b'gender':[b'male']}

urllib.parse.parse_qsl()

将返回的query字符串转换为包含二维元组的列表

urllib.parse.parse_qsl(qs, keep_blank_values=False, strict_parsing=False, encoding='utf-8', errors='replace')
# 例如 [(b'name',b'zjw'),(b'age',b'23'),(b'gender',b'male')]

urllib.error

错误:

  • urllib.error.URLError

  • urllib.error.HTTPError

  • urllib.error.ContentTooShortError
    当urlretrieve()方法下载数据的大小小于实际期望值时触发该错误

处理:

from urllib.request import Request, urlopen
from urllib.error import URLError, HTTPError

req = Request('http://www.python.org/')
try:
  response = urlopen(req)
except HTTPError as e:
  print('The (www.python.org)server could not fulfill the request.')
  print('Error code: ', e.code)
except URLError as e:
  print('We failed to reach a server.')
  print('Reason: ', e.reason)
else:
  print("good!")
  print(response.read().decode("utf8"))

如果觉得这篇文章帮助了您,请打赏一个小红包鼓励作者继续创作哦!!!

在这里插入图片描述

Python学习[3]:urllib库-爬虫的第二步 这一节主要学习了以下方面: POST请求的处理 代理IP使用 超时处理加工 parse解析工作 POST请求的处理 POST是HTTP协议的请求方法之一,作为一枚资深的JAVA开发,对于postMan的使用和测试开发势必要步骤。 在这里主要是使用Python的post来实现正常的post请求模拟,发送信息正常访问服务器。比如通常使用的登录,以及条件查... 阅读详情

相关推荐

为什么传统CNN在视网膜分割中败给Mamba?从血管拓扑学揭秘Serp-Mamba的蛇形扫描黑科技

本文深入分析了传统CNN在视网膜血管分割任务中的局限性,特别是在处理高分辨率图像和复杂血管拓扑结构时。针对这些问题,文章重点介绍了Serp-Mamba模型的核心创新——蛇形交织自适应扫描(SIA)机制,该机制通过让扫描路径自适应地贴合血管曲率,并结合模糊驱动双重校准(ADDR)模块应对极端类别失衡,从而在视网膜血管分割任务上实现了性能的显著突破。

ss78901的博客 894

raise NewConnectionError( urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPSConnecti

在运用requests爬取网页时,会出现 需要在请求参数里边添加一个 proxies = {“http”: None, “https”: None},即可以解决上边的问题。

qq_39172055的博客 6985

九齐NY8A051F低功耗模式全解析:从待机到休眠的省电实战

本文全面解析台湾九齐NY8A051F MCU的低功耗模式,从待机到休眠的省电实战技巧。通过实测数据展示四种工作模式的电流消耗差异,提供模式切换的标准流程和唤醒时序优化策略,并分享外围电路省电设计和低电压检测的实战应用,帮助开发者实现物联网设备的超长续航。

weixin_30839881的博客 410

appium ConnectionRefusedError,urllib3.exceptions.NewConnectionError,urllib3.exceptions.MaxRetryError

appium ConnectionRefusedError,urllib3.exceptions.NewConnectionError,urllib3.exceptions.MaxRetryError踩坑 报错关键信息 ConnectionRefusedError: [WinError 10061] 由于目标计算机积极拒绝,无法连接。 urllib3.exceptions.NewConnectionError: <urllib3.connection.HTTPConnection object at

我是一言 9478

IS-IS协议深度解析(二):LSDB同步机制与骨干网实战部署

本文深度解析IS-IS协议的LSDB同步机制与骨干网实战部署。详细阐述了DIS角色如何通过CSNP/PSNP报文高效管理链路状态数据库同步,并与OSPF DR机制进行对比。重点介绍了Level-2骨干网作为逻辑高速公路系统的工作原理,以及通过ATT比特位实现跨区域路由的自动化。最后提供了高可靠性骨干网的实战配置要点与验证方法。

kite3的博客 644

科研人必备!用WisPaper搭建个人文献知识库的完整指南(附Zotero联动技巧)

本文详细介绍了如何利用WisPaper搭建高效的个人文献知识库,包括文件命名标准化、文件夹结构设计、语义搜索技巧及与Zotero的深度联动方法。通过智能标签系统和知识图谱功能,科研人员可以快速定位关键文献,提升研究效率。特别适合需要管理大量学术文献的研究者。

weixin_30823001的博客 267

linux http new connection rate,urllib3。exceptions.NewConnectionError:<urllib3。connection.HTTPConnect...

urllib3。exceptions.NewConnectionError·无法建立新的连接发生错误。当我访问get_data方法时,发生错误。我在get_data方法中写到def get_data(request, **user_id):user = UserInfoUtil.user(id, user_id['user_id'])print(111)uid = user.to_string()...

weixin_39747577的博客 1645

基于STM32L4XX 、HAL库的TMC2226-SA-T步进电机驱动器驱动程序应用设计

集成的功率MOSFET可处理高达2A RMS的电机电流,并具备保护与诊断功能,确保运行稳健可靠。作为业界最先进的STEP/DIR步进电机驱动系列,该芯片通过升级设计实现无噪音、高精度运行,为用户提供高性价比且极具竞争力的解决方案。// 用于PDN_UART单线通信。// HAL_UART_Transmit - 注意PDN_UART是单线,收发共线。.huart = &huart1, // PDN_UART连接的USART。均方根步进/方向控制接口,提供8、16、32或64微步针设置,

PP_Cottage的博客 625

解决python3 requests报错urllib3.exceptions.NewConnectionError: <urllib3.connection.VerifiedHTTPSConnecti

#友链 通过loop循环解决 # -*- coding: UTF-8 -*- import sys from time import sleep import re import requests #下面这三行代码是为了解决requests的一个bug,就是Connection broken: IncompleteRead #其实真正的原因我到现在也不清楚,但是下面这三行代码确实可以解决问题 #参考https://my.oschina.net/u/1538135/blog/858467 #python3.

include_heqile的博客 1万+

华为ONU远程登录管理配置

华为P602E、EG8040CONU、EG8240H5、W626E等ONU、ONT默认无法配置管理IP,无法远程telnet登录管理。校园网项目中因故障诊断需要远程登录ONU可以通过OLT的远程WEB代理功能链接登录,具体配置如下:

symstandsun的博客 6109

S7-200SMART PLC中进行MODBUS RTU通信的3种方法(1)

S7-200SMART PLC中进行MODBUS RTU通信的3种方法(1)

Robot_PLC_HMI_Automation 4238

python3爬虫学习之urllib库

下面介绍爬虫的一个基本库,urllib 从代码看起(本文所有代码依赖于第一篇代码中前三行导入的库和模块) 一: 下面的代码介绍最基本方法及其作用,注释在代码块中 import urllib from urllib import request from urllib import parse response = urllib.request.urlopen('http://www.p...

s_kangkang_A的博客 309

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python3中 urllib库的学习记录

Python urllib 库用于操作网页 URL,并对网页的内容进行抓取处理。urllib.request 定义了一些打开 URL 的函数和类,包含授权验证、重定向、浏览器 cookies等。 urllib.request 可以模拟浏览器的一个请求发起过程。

fmislx007的博客 220

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

python3urllib库_Python标准库学习之urllib

本系列以python3.4为基础urllib是Python3的标准网络请求库。包含了网络数据请求,处理cookie,改变请求头和用户代理,重定向,认证等的函数。urllib与urllib2?:python2.x用urllib2,而python3改名为urllib,被分成一些子模块:urllib.request,urllib.parse,urllib.error,urllib.robotparser...

weixin_39707168的博客 297

Python3之urllib库学习笔记

urilib库 1、了解urllib库 是Python自带的网络请求库,可以模拟浏览器的行为,向指定服务器发送一个请求,并可以保存服务器返回的数据。 2、熟练掌握urllib函数 urlopen 一个表示远程url的类文件对象,然后像本地文件一样操作这个对象来获取远程数据。 案例: from urllib import request resq = request.urlopen('https://www.baidu.com') print(resq.read()) url:请求的url data:请求的

sosoonp的博客 445

python3中urllib库_Python3中的Urllib库——小白第一周学习笔记(2)

一、Urllib库——Python内置的HTTP请求库urllib.request 请求模块(模拟发送请求)urllib.error 异常处理模块urllib.parse url解析模块(提供许多url处理方法,如差分,合并)urllib.robotparser robots.txt解析模块二、用法演示1.urlopenurllib...

weixin_31317351的博客 213

Python3学习-urllib库详解

Python3学习-urllib库详解网站身份验证代理cookies异常处理链接解析Robots协议 本文内容参考崔庆才童鞋的《Python 3网络爬虫开发实战》,就当做一个读书笔记吧,以后自己写代码的时候可以多翻翻自己以前学过的,不过程序真的几天不写就手生啊啊啊啊。以后编程不能停呀! 网站身份验证 利用HTTPBasicAuthHandler进行身份验证 // An highlighted bl...

qq_23594219的博客 458

Python3 爬虫学习笔记 C01 【基本库 urllib 的使用】

文章目录 1.1 urllib 简介 1.1.1 urllib.request 发送请求1.1.1.1 urllib.request.urlopen()● 基本使用方法● 添加参数● data 参数● timeout 参数1.1.1.2 urllib.request.Request()1.1.1.3 urllib.request.urlretrieve() 1.1.2 urllib.error ...

BOB'S BLOG 1771

python3urllib库爬虫_Python3 爬虫学习(一):urllib库的使用及简单的爬取

Python版本:3.XIDE:jupyterurllib介绍官方说明urllib is a package that collects several modules for working with URLs:urllib.request for opening and reading URLsurllib.error containing the exceptions raised by u...

weixin_42361026的博客 257

python学习(3)Urllib库的基本使用

Urllib是Python内置的HTTP请求库 urllib.request 请求模块 urllib.error 异常处理模块 urllib.parse url解析模块 urllib.robotparser rebots.txt解析模块 用法: &amp;gt;&amp;gt;&amp;gt; import urllib.request &amp;gt;&amp;gt;&amp;g...

mirrorming 413

【Python3爬虫学习笔记】urllib库详解

一、基本方法: urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) - url:  需要打开的网址 - data:Post提交的数据 - timeout:设置网站的访问超时时间 直接用urllib.request模块的urlopen...

记事本 242

python3爬虫学习之urllib库实战爬取网站

目的:熟悉并使用urllib,了解实际爬取时需要注意的事项 以爬取拉勾网为例 进入拉勾网,搜索python,拿到上面的url 上代码 from urllib import request,parse url = "https://www.lagou.com/jobs/list_python?labelWords=&fromSearch=true&suginput="...

s_kangkang_A的博客 476

Python3 爬虫学习(一):urllib库的使用及简单的爬取

Python版本:3.X IDE:jupyterurllib介绍官方说明https://docs.python.org/3/library/urllib.html urllib is a package that collects several modules for working with URLs: urllib.request for opening and reading

cocoaqin的博客 1524

python3 urllib库 学习笔记

目录 1. 2. 1. 2. 转载于:https://www.cnblogs.com/lushans/p/8593445.html

weixin_34405354的博客 141
上一篇: wordcloud制作中文词云图(官方文档参数翻译)
下一篇: python3 json库学习
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值