python包中的urllib网络请求怎么实现
发表于:2024-11-18 作者:千家信息网编辑
千家信息网最后更新 2024年11月18日,这篇文章主要讲解了"python包中的urllib网络请求怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python包中的urllib网络请求
千家信息网最后更新 2024年11月18日python包中的urllib网络请求怎么实现
这篇文章主要讲解了"python包中的urllib网络请求怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python包中的urllib网络请求怎么实现"吧!
一、简介
是一个 python 内置包,不需要额外安装即可使用
urllib 是 Python 标准库中用于网络请求的库,内置四个模块,分别是
urllib.request:用来打开和读取 url,可以用它来模拟发送请求,获取网页响应内容
urllib.error:用来处理 urllib.request 引起的异常,保证程序的正常执行
urllib.parse:用来解析 url,可以对 url 进行拆分、合并等
urllib.robotparse:用来解析 robots.txt 文件,判断网站是否能够进行爬取
二、发起请求
import urllib.request# 方法一resp = urllib.request.urlopen('http://www.baidu.com', timeout=1)print(resp.read().decode('utf-8'))# 方法二request = urllib.request.Request('http://www.baidu.com')response = urllib.request.urlopen(request)print(response.read().decode('utf-8'))
三、携带参数请求
请求某些网页时需要携带一些数据
import urllib.parseimport urllib.requestparams = {'name':'autofelix','age':'25'}data = bytes(urllib.parse.urlencode(params), encoding='utf8')response = urllib.request.urlopen("http://www.baidu.com/", data=data)print(response.read().decode('utf-8'))
四、获取响应数据
import urllib.requestresp = urllib.request.urlopen('http://www.baidu.com')print(type(resp))print(resp.status)print(resp.geturl())print(resp.getcode())print(resp.info())print(resp.getheaders())print(resp.getheader('Server'))
五、设置headers
import urllib.requestheaders = {'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36'}request = urllib.request.Request(url="http://tieba.baidu.com/", headers=headers)response = urllib.request.urlopen(request)print(response.read().decode('utf-8'))
六、使用代理
import urllib.requestproxys = urllib.request.ProxyHandler({'http': 'proxy.cn:8080','https': 'proxy.cn:8080'})opener = urllib.request.build_opener(proxys)urllib.request.install_opener(opener)request = urllib.request.Request(url="http://www.baidu.com/")response = urllib.request.urlopen(request)print(response.read().decode('utf-8'))
七、认证登录
有些网站需要携带账号和密码进行登录之后才能继续浏览网页
import urllib.requesturl = "http://www.baidu.com/"user = 'autofelix'password = '123456'pwdmgr = urllib.request.HTTPPasswordMgrWithDefaultRealm()pwdmgr.add_password(None,url,user,password)auth_handler = urllib.request.HTTPBasicAuthHandler(pwdmgr)opener = urllib.request.build_opener(auth_handler)response = opener.open(url)print(response.read().decode('utf-8'))
八、设置cookie
如果请求的页面每次需要身份验证,我们可以使用
Cookies
来自动登录,免去重复登录验证的操作
import http.cookiejarimport urllib.requestcookie = http.cookiejar.CookieJar()handler = urllib.request.HTTPCookieProcessor(cookie)opener = urllib.request.build_opener(handler)response = opener.open("http://www.baidu.com/")f = open('cookie.txt', 'a')for item in cookie:f.write(item.name+" = "+item.value+'\n')f.close()
九、异常处理
from urllib import error, requesttry:resp = request.urlopen('http://www.baidu.com')except error.URLError as e:print(e.reason)
十、HTTP异常
from urllib import error, requesttry:resp = request.urlopen('http://www.baidu.com')except error.HTTPError as e:print(e.reason, e.code, e.headers, sep='\n')except error.URLError as e:print(e.reason)else:print('request successfully')
十一、超时异常
import socket, urllib.request, urllib.errortry:resp = urllib.request.urlopen('http://www.baidu.com', timeout=0.01)except urllib.error.URLError as e:print(type(e.reason))if isinstance(e.reason,socket.timeout):print('time out')
十二、解析编码
from urllib import parsename = parse.quote('飞兔小哥')# 转换回来parse.unquote(name)
十三、参数拼接
在访问url时,我们常常需要传递很多的url参数
而如果用字符串的方法去拼接url的话,会比较麻烦
from urllib import parseparams = {'name': '飞兔', 'age': '27', 'height': '178'}parse.urlencode(params)
十四、请求链接解析
from urllib.parse import urlparseresult = urlparse('http://www.baidu.com/index.html?user=autofelix')print(type(result))print(result)
十五、拼接链接
如果拼接的是两个链接,则以返回后面的链接
如果拼接是一个链接和参数,则返回拼接后的内容
from urllib.parse import urljoinprint(urljoin('http://www.baidu.com', 'index.html'))
十六、字典转换参数
from urllib.parse import urlencodeparams = {'name': 'autofelix','age': 27}baseUrl = 'http://www.baidu.com?'print(baseUrl + urlencode(params))
感谢各位的阅读,以上就是"python包中的urllib网络请求怎么实现"的内容了,经过本文的学习后,相信大家对python包中的urllib网络请求怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
网络
参数
链接
内容
登录
方法
网页
学习
验证
数据
网站
处理
两个
字典
字符
字符串
密码
就是
思路
情况
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全运维工作日常
学校网络安全活动计划
服务器系统启动位置
网络显示代理服务器拒绝连接
宜春头条网络安全周
吉林发展软件开发项目信息
nisec网络安全中心
监控无法连接服务器失败
天津g38842图腾服务器机柜
mx服务器
传奇服务器被攻击了
观看护苗网络安全序列课程
数据库数据文件不变
宣城医院软件开发费用
海宁市一个家网络技术有限公司
app升级服务器地址
云南网络安全信息中心
jwt鉴权服务器
java 游戏服务器框架
定制软件开发项目明细
农村夏天网络安全隐患图片
绝地求生服务器非常繁忙
浙江特种网络技术设计
黑色沙漠主机版服务器选择
网络安全信息实例视频教程
正定软件开发入门教程哪里好
网络安全初级证书都考什么
上市互联网科技企业
ip地址归属地数据库
明日之后伊尼山服务器属于什么