在python3中合并了urllib和urllib2,现在只有一个urllib模块,urllib和urllib2的内容被整合到urllib.request中,urlparse被整合到urllib.parse中。
urlparse
将urlstr解析成各个组件
import urllib.request
import urllib.parse
url = "http://www.baidu.com"
parsed = urllib.parse.urlparse(url)
print(parsed)
#输出:ParseResult(scheme='http', netloc='www.baidu.com', path='', params='', query='', fragment='')
urljoin(baseurl,newurl,allowFrag=None)
将url的根域名和新url拼合成一个完整的url
import urllib.parse
url = "http://www.baidu.com"
new_path = urllib.parse.urljoin(url,"index.html")
print(new_path)
#输出:http://www.baidu.com/index.html
urlopen(url,data,timeout)
打开一个url的方法,返回一个文件对象,然后可以进行类似文件对象的操作
import urllib.request
req = urllib.request.urlopen('http://www.baidu.com')
print(req.read())
read() , readline() , readlines() , fileno() , close()
info():返回一个httplib.HTTPMessage 对象,表示远程服务器返回的头信息。
getcode():返回Http状态码,如果是http请求,200表示请求成功完成;404表示网址未找到。
geturl():返回请求的url。
urlretrieve(url,filename,reporthook,data)
下载url定位到的html文件,不写路径filename则会被存为临时文件可以用 urllib.urlcleanup() 来清理缓存
file_name = urllib.request.urlretrieve('http://www.baidu.com','%s/baidu.html'%BASE_DIR)
urlencode()
将dict中的键值对以连接符&划分
import urllib.parse
dic = {'name':'melon','age':18}
data = urllib.parse.urlencode(dic)
print(data) #age=18&name=melon
GET请求
GET请求和我们平时的get访问方式一样,直接把参数写到URL中即可
import urllib.request
import urllib.parse
dic = {'name':'melon','age':18}
data = urllib.parse.urlencode(dic)
req = urllib.request.urlopen('http://127.0.0.1:8000/index?%s'%data)
content = req.read()
POST请求
import urllib.request
import urllib.parse
import json
dic = {'name':'melon','age':18}
data = urllib.parse.urlencode(dic)
req = urllib.request.Request('http://127.0.0.1:8000/index', data.encode())
opener = urllib.request.urlopen(req)
content = json.loads(opener.read().decode())
当你 urllib.urlopen 一个 https 时,SSL 证书将被验证一次。当目标使用自签名证书时,将出现 URLError。如果是这样,你可以在开头添加
import ssl
ssl._create_default_https_context = ssl._create_unverified_context
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ 如何在python中使用变量12/24
- ♥ 什么是python迭代器10/07
- ♥ Python基础:return和break的区别10/15
- ♥ 如何在python中实现单例模式12/21
- ♥ python线程间通信用什么方式12/13
- ♥ 哪个语言难,python还是c08/31
内容反馈