python3中沒有urllib2html
python3 與 python2 關於 urllib的區別用法以下python
python2 | python3 |
urllib.urlopen |
urllib.request.urlopen |
urllib.urlretrieve |
urllib.request.urlretrieve |
urllib.quote |
urllib.parse.quote |
一、urlopengit
#coding=utf-8
# python3 用 urllib.request;python2用urllib import urllib.request ''' urlopen:打開一個url,返回一個文件對象 read() , readline() ,readlines() , fileno() , close() :這些方法的使用方式與文件對象徹底同樣 ''' htmlFile = urllib.request.urlopen('https://www.baidu.com/') # firstLine = htmlFile.readline() # print('獲取第一行:',firstLine) # # lines = htmlFile.readlines() # print('逐行獲取全部行:',lines) # all = htmlFile.read() # print('獲取全部行:',all) # fileno = htmlFile.fileno() # print('文件描述:',fileno) # info = htmlFile.info() # print('遠程服務器返回的頭消息:',info) code = htmlFile.getcode() print('請求狀態碼:',code) url = htmlFile.geturl() print('請求的url:',url) htmlFile.close()
二、urlretrieve緩存
#coding=utf-8 ''' urlretrieve:將url定位到html文件下載到本地 1)不指定filename,保存爲臨時文件 2)指定filename,存爲本地文件 ''' import urllib.request # 臨時文件 # filename = urllib.request.urlretrieve('https://www.baidu.com/') # # print(type(filename)) # # print(filename[0]) # print(filename[1]) # 本地文件 filename = urllib.request.urlretrieve('https://www.baidu.com/',filename='file/baidu.html') print(filename[0]) print(filename[1]) # 清除urlretrieve 產生的緩存 urllib.request.urlcleanup()
三、quote服務器
#coding=utf-8 ''' quote(s,safe='/') s是字符串,對s進行編碼,指定safe中的不編碼,默認爲/ quote_plus(s,safe='') s是字符串,對s進行編碼,指定safe中的不編碼,默認爲空,但會將空格編碼成+ ''' import urllib.parse # 編碼 oQuote = urllib.parse.quote('https://www.baidu.com/') print('編碼後的url:',oQuote) print(urllib.parse.quote(u'你+好/',safe='+')) oQuote_plus = urllib.parse.quote_plus('http://www.baidu.com') print(oQuote_plus) print(urllib.parse.quote_plus(u'你 好/',safe='/')) # 解碼 print('解碼:',urllib.parse.unquote('%E4%BD%A0+%E5%A5%BD%2F')) print('解碼:',urllib.parse.unquote_plus('%E4%BD%A0+%E5%A5%BD%2F')) # +解碼成空格
四、urlencodepost
#coding=utf-8 import urllib.parse import urllib.request # get請求 params = urllib.parse.urlencode({'spam':1,'eggs':2,'bacon':0}) print(params) # params此時是str response = urllib.request.urlopen('https://www.baidu.com?%s' %params) print('get請求url:',response.geturl()) # post請求 posturl = 'http://192.168.129.152:8090/queryRoadBookIdByRange.do' postdata = {'longitude':'118.9','latitude':'31.8','cityName':'南京市','roadCount':'3'} params = urllib.parse.urlencode(postdata) params = params.encode('utf-8') # 要將params encode成byte,post請求後面跟 byte print(params) response = urllib.request.urlopen(posturl,params) print('post響應:',response.read().decode('utf-8'))