urllib库是python中最基本的网络请求库,模拟浏览器的行为,向指定的服务器发送一个请求,并保存服务器返回的一个数据。
Request:
urlopen()函数参数:
url:请求的url
data:请求的data,若设置该值,则为post请求。
返回值:返回值是一个 http.client.HTTPResponse 对象,有 read(size), readline(), readlines(), getcode()方法。
response = request.urlopen("http://www.baidu.com")
print(response.read())
print(response.read(3))
print(response.getcode())
print(response.readline())
print(response.readlines())
urlretrieve函数:
request.urlretrieve(‘url’,‘filename’),将网页下载到本地
request.urlretrieve('http://www.tv432.com', 'heimi.html')
params = {'name': '张三', 'age': 18, 'greet': 'hello world'}
result = parse.urlencode(params)
print(result)
Parse:
urlencode函数:将不在ASCll中的字符进行编码,url在请求之前,浏览器会将url中不在ascll中的字符进行编码,才能够进行请求。
parse_qs函数:将编码的字符进行解码
url = 'http://www.baidu.com/s'
params0 = {'wd': '刘德华'}
result0 = parse.urlencode(params0)
print(result0)
url = url + '?' + result0
print(url)
response = request.urlopen(url)
print(response.read())
# parse_qs函数
result = parse.parse_qs(result)
print(result)
***urlparse函数:***将scheme,netloc,path,params,query,fragment从url中分离出来
from urllib import parse
url = 'http://www.baidu.com/s;hello?wd=python&username=abc#1'
result = parse.urlparse(url)
print(result)
print('scheme:', result.scheme)
print('netloc:', result.netloc)
print('path:', result.path)
print('params:', result.params)
print('query:', result.query)
print('fragment:', result.fragment)
result0 = parse.urlsplit(url)
print(result0)
urlsplit函数:与urlparse函数相比缺少params,其余均为一样的。
url中的params也用的比较少,如
url = 'http://www.baidu.com/s;hello?wd=python&username=abc#1
则params ;?中的内容hello