python包中的urllib网络请求怎么实现
发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,这篇文章主要讲解了"python包中的urllib网络请求怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python包中的urllib网络请求
千家信息网最后更新 2025年02月01日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安全错误
数据库的锁怎样保障安全
网络技术员一个月多少钱
黄明昊视频软件开发
盘锦盒子网络技术有限公司
数据库应用技术实验指导天津大学
机务段网络安全
我的世界147服务器
如何让别人访问sql数据库
查看mysql服务器中数据库
软件开发是不是科技创新
电子书制作软件开发
点米互联网科技公司
橙子软件开发
互联网科技有哪些股票代码
简单网络安全宣传栏设计
带数据库的套料软件
启明星辰网络安全测试要多少钱
500万软件开发合同
学生表数据库教程视频
传入电子邮件服务器
网络安全法博客
软件开发方案合同模板下载
网络技术员一个月多少钱
可以用服务器做nas吗
网络技术三级选择题考点
网络安全发展的论文
电竞经理服务器已满怎么办
软件开发是不是科技创新
sql原数据库被覆盖还原
台湾服务器租云主机安全吗
信誉良好的软件开发