python包中的urllib网络请求怎么实现
发表于:2024-11-19 作者:千家信息网编辑
千家信息网最后更新 2024年11月19日,这篇文章主要讲解了"python包中的urllib网络请求怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"python包中的urllib网络请求
千家信息网最后更新 2024年11月19日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安全错误
数据库的锁怎样保障安全
电商要买哪种服务器
linux搭建ftp服务器
多个数据库怎么打开
怀旧服新服务器插件
软件连不上数据库怎么解决
犀利软件开发
网络安全汇报材料
微信服务器后台记录
电脑代理服务器可以打开么
贵州智慧园区管理平台软件开发
软件开发业务怎么谈
金的xrd数据库
国家网络安全宣传周答案
安师大网络安全实验室
惠普服务器查以前用的命令
北邮网络技术研究院5组
软件开发珠海前100
王者抢先服服务器怎么进入
仿安防互联服务器IDC公司模板
企业网络安全配置服务
程序服务器哪个配置好
软件开发员工保密协议免费
软件开发标准化建设
apex服务器升级失败
HROSaaS软件开发商
河北旧服务器回收多少钱
为进一步完善网络安全相关工作
闵行区个性化软件开发口碑推荐
什么情况下需要数据库转换
软件开发过程八大步骤