蚌埠本地网站,企业管理专业就业方向,织梦文章title怎么显示网站title,wordpress 中文版本urllib库
urllib库是Python中一个最基本的网络请求库。可以模拟浏览器的行为#xff0c;向指定的服务器发送一个请求#xff0c;并可以保存服务器返回的数据。
一、urlopen函数#xff1a;
在Python3的urllib库中#xff0c;所有和网络请求相关的方法#xff0c;都被集…urllib库
urllib库是Python中一个最基本的网络请求库。可以模拟浏览器的行为向指定的服务器发送一个请求并可以保存服务器返回的数据。
一、urlopen函数
在Python3的urllib库中所有和网络请求相关的方法都被集到urllib.request模块下面了以先来看下urlopen函数基本的使用
from urllib import parse,requestresprequest.urlopen(http://www.baidu.com)
print(resp.read())实际上使用浏览器访问百度右键查看源代码。你会发现跟我们刚才打印出来的数据是一模一样的。也就是说上面的三行代码就已经帮我们把百度的首页的全部代码爬下来了。一个基本的ur请求对应的python代码真的非常简单。 以下对urlopen函数的进行详细讲解
ur1请求的url。data请求的data如果设置了这个值那么将变成post请求。返回值返回值是一个http.client.HTTPResponse对象这个对象是一个类文件句柄对象。有readsize、readline、readlines以及 getcode等方法。
二、urlretrieve函数
这个函数可以方便的将网页上的一个文件保存到本地。以下代码可以非常方便的将百度的首页下载到本地
request.urlretrievehttp://www.baidu.com/baidu.html三、urlencode函数
用浏览器发送请求的时候如果url中包含了中文或者其他特殊字符那么浏览器会自动的给我们进行编码。而如果使用代码发送请求那么就必须手动的进行编码这时候就应该使用urlencode函数来实现。urlencode 可以把字典数据转换为URL编码的数据。 示例代码如下
from urllib import parse
data{name:爬虫基础,greet:hel1o world,age:100}
qsparse.urlencode(data)
print(qs)四、parse-qs函数:
可以将经过编码后的url参数进行解码.示例代码如下:
from urllib import parse
qsname%E7%88%AC%E8%99%AB%E5%9F%BA%E7%A1%80greethel1oworldage100
print(parse.parse_qs(qs))五、urlparse和urlsplit:
有时候拿到一个url想要对这个url中的各个组成部分进行分割,那么这时候就可以使用urlparse 或者是urlsplit来进行分割。
urlparse VS urlsplit: urlparse和urlsplit基本上是一模一样的。唯一不一样的地方是,urlparse里面多了一个params属性,而urlsplit 没有这个params 属性。 比如有一个ur1为:url“http://www.baidu.com/s;he116wdpythonusernameabc#1”,那么urlparse可以获取到hello,而urlsplit不可以获取到ur1中的params。不过params也用得比较少。
示例代码如下:
from urllib import parse# urlparse()函数可以对url中的各个组成部分进行分割
url http://www.baid.com/s;hello?wdpythonusernameabc#1
result parse.urlparse(url)
print(result)
print(sheme:,result.scheme)
print(netloc:,result.netloc)
print(path:,result.path)
print(params:,result.params)
print(query:,result.query)
print(fragment:,result.fragment)
print(___________________________________________________)# urlsplit()函数可以对url中的各个组成部分进行分割。
# 与urlparse函数的区别是获取不到params参数
url http://www.baid.com/s;hello?wdpythonusernameabc#1
result1 parse.urlsplit(url)
print(result1)
print(sheme:,result1.scheme)
print(netloc:,result1.netloc)
print(path:,result1.path)
print(query:,result1.query)
print(fragment:,result1.fragment) 六、request.Request类
如果想要在请求的时候增加一些请求头那么就必须使用request.Request类来实现。比如要增加一个user-Agent示例代码如下
from urllib import request,parse# url https://www.lagou.com/jobs/list_python?labelWordsfromSearchtruesuginput# resp request.urlopen(url)
# print(resp.read())urlhttps://www.lagou.com/jobs/positionAjax.json?needAddtionalResultfalse
headers {User-agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36,Referer: https://www.lagou.com/jobs/list_python?labelWordsfromSearchtruesuginput,cookie:JSESSIONIDABAAAECABFAACEA3AD765CDE843CA586D421446C532914E; WEBTJ-ID20200705115323-1731d1b6bc825-0405fa83b8e6d6-4353760-1327104-1731d1b6bc9384; RECOMMEND_TIPtrue; _gaGA1.2.46425096.1593921203; _gidGA1.2.826525276.1593921203; Hm_lvt_4233e74dff0ae5bd0a3d81c6ccf756e61593921203; user_trace_token20200705115324-c8c6fa59-8a84-4396-8006-b333350a1ba3; LGUID20200705115324-4e60a88a-117c-41b1-9f9a-4fab6e3de16c; index_location_city%E5%85%A8%E5%9B%BD; sensorsdata2015jssdkcross%7B%22distinct_id%22%3A%221731d1bd5ef189-0fcf11ef369d0e-4353760-1327104-1731d1bd5f053e%22%2C%22%24device_id%22%3A%221731d1bd5ef189-0fcf11ef369d0e-4353760-1327104-1731d1bd5f053e%22%7D; sajssdk_2015_cross_new_user1; gate_login_token026296b5405ba7262db2b24fcf9d5b8117c81a1e33622a5e79041639173d1a81; LG_HAS_LOGIN1; _putrcFC2FE27B6F83DDA8123F89F2B170EADC; logintrue; hasDeliver0; privacyPolicyPopupfalse; TG-TRACK-CODEsearch_code; X_HTTP_TOKENfce9ae0065ee91cf1966393951d8f9e3438bdf9565; _gat1; Hm_lpvt_4233e74dff0ae5bd0a3d81c6ccf756e61593936691; unick%E7%94%A8%E6%88%B77635; showExpriedIndex1; showExpriedCompanyHome1; showExpriedMyPublish1; PRE_UTM; PRE_HOST; PRE_LANDhttps%3A%2F%2Fwww.lagou.com%2Fjobs%2Flist%5Fpython%3FlabelWords%3D%26fromSearch%3Dtrue%26suginput%3D; PRE_SITEhttps%3A%2F%2Fwww.lagou.com%2F; LGSID20200705161131-ef5a3ae0-624a-4e8d-a2ab-f1a137a0b949; SEARCH_IDaf2f4215dc1c4b94b740856f91881da2; LGRID20200705161132-15702da1-6480-4fa5-8e16-72c5a2c0ed45
}data {first:true,pn:1,kd:python
}req request.Request(url,headersheaders,dataparse.urlencode(data).encode(utf-8),methodPOST)
resp request.urlopen(req)
print(resp.read().decode(utf-8))
# print(resp.read()) JSON在线解析网站http://json.cn/ 自动获取本地IP地址网站http://httpbin.org/
七、代码
from urllib import request
from urllib import parse# resp request.urlopen(http://www.baidu.com)
# print(resp.read())
# print(resp.read(10))
# print(resp.readline())
# print(resp.readlines())
# print(resp.getcode())# urlretrieve函数可以将网页上的一个文件保存到本地
# request.urlretrieve(https://timgsa.baidu.com/timg?imagequality80sizeb9999_10000sec1593927965278di8749753c6b8d8d142eb37ebac38fe7deimgtype0srchttp%3A%2F%2Fcyimg.quji.com%2Fnewsimg%2F2016%2F02%2F19%2F0449ff918e2484761f2dee7af1432108.jpg,luban.jpg)# urlencode函数可以把字典数据转换成url编码的数据# data {name:爬虫基础,greet:hello world,age:100}
# qs parse.urlencode(data)
# print(qs)# 案例
# url http://www.baidu.com/s?wd刘德华
url http://www.baidu.com/s
params {wd:刘德华}
qs parse.urlencode(params)
print(qs)
url url ? qs
print(url)
resp request.urlopen(url)
print(resp.read())# parse_qs函数可以将经过编码后的url参数进行解码
print(parse.parse_qs(qs))