標籤:bytes 返回 sep 查看 搜尋引擎最佳化 使用 exp 2.7 date
#################################################
‘‘‘
版本:python2.7
編輯器:pycharm
標準庫:urllib
header網頁頭部資訊:
server:centos、microsoft-IIs
content-type:text/html;charset=GBK
last-modified:更新資訊
‘‘‘
import urllib
#查看urllib中所擁有的方法及變數
# print dir(urllib)
# #利用help來查看urllib協助文檔
print help(urllib)
print help(urllib.urlopen)
url ="http://www.iplaypython.com/"
html = urllib.urlopen(url)
print html.read()
print html.info()
‘‘‘
Date: Fri, 01 Sep 2017 16:16:50 GMT #美國地區現在時間
Server: Apache #linux系統下的apache伺服器
Last-Modified: Mon, 28 Aug 2017 02:05:22 GMT #最進更新時間
ETag: "52316-112e9-557c6ba29dc80" #etag是表示搜尋引擎最佳化,搜尋引擎也是根據這個標籤與上面一個標籤來判斷你的搜尋引擎是否更新
Accept-Ranges: bytes
Content-Length: 70377
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
‘‘‘
#擷取網頁的狀態代碼
print html.getcode()
#玩蛇王是utf-8的編碼,所以就不用進行轉編碼
#測試一個不是utf-8的網站
url1 = "http://www.163.com/"
html1 = urllib.urlopen(url1)
# print html1.read().decode(‘gbk‘).encode(‘utf-8‘)
#查看163.com的標頭檔資訊
# print html1.info()
‘‘‘
結果如下:
Expires: Fri, 01 Sep 2017 16:12:59 GMT
Date: Fri, 01 Sep 2017 16:11:39 GMT #伺服器資訊所在地區的現在的時間
Server: nginx #伺服器類型(linux或者是windows等)
Content-Type: text/html; charset=GBK #網頁編碼
Vary: Accept-Encoding,User-Agent,Accept
Cache-Control: max-age=80
X-Via: 1.1 shq150:6 (Cdn Cache Server V2.0), 1.1 dunyidong72:1 (Cdn Cache Server V2.0)
Connection: close
‘‘‘
#通過擷取該網頁的狀態代碼來判斷該網頁是否可以訪問,如果輸出結果為200則可以訪問,出現其他的則不可以訪問。
print html1.getcode()
#擷取網址
print html1.geturl()
‘‘‘
普及網頁的狀態代碼的內容:
200:表示可以正常訪問
301:重新導向,自己去百度。
404:網頁不存在#可以隨便創造一個網址來進行判斷
403:禁止訪問:許可權問題/或者是禁止爬蟲抓取
500:伺服器忙碌
<http權威指南,專門介紹http協議>
web開發,這本書是必備的
‘‘‘
#網頁抓取完成後,下載網頁
urllib.urlretrieve(url,‘E:\\abc.txt‘)#也可儲存一個html檔案。
html.close()
html1.close()
########################################################################################
#1 decode()方法之ignore
# import urllib
# url = "http://www.163.com/"
# html = urllib.urlopen(url)
# content = html.read().decode("gbk",‘ignore‘).encode("utf-8")
# print content
# 2 條件判斷語句,自動化處理抓取的結果
import urllib
url = "http://www.iplaypython.com/"
html=urllib.urlopen(url)
print html.read()
#相當於:html = urllib.urlopen(url).read()
#Pprint html
# print html.getcode()
#相當於:html = urllib.urlopen(url).getcode()
#print html
# print html.geturl()
# print html.info()
code = html.getcode()
if code ==200:
print "網頁正常"
print html.read()
print html.info()
else:
print "網頁有問題"
###############################################################
import urllib
url = "http://www.iplaypython.com"
info = urllib.urlopen(url).info()
print info
‘‘‘
執行結果為:
Date: Sat, 02 Sep 2017 05:08:27 GMT
Server: Apache
Last-Modified: Mon, 28 Aug 2017 02:05:22 GMT
ETag: "52316-112e9-557c6ba29dc80"
Accept-Ranges: bytes
Content-Length: 70377
Vary: Accept-Encoding
Connection: close
Content-Type: text/html
‘‘‘
print info.getparam("charset")
#返回結果為:None 從中可知,有些網站時沒有聲明頭部資訊。
#我們修改一個網址來執行
url1="http://www.163.com"
info1=urllib.urlopen(url1).info()
print info1
‘‘‘
在這裡為什麼要輸入一個字串的參數呢?
其傳回值是在哪裡擷取的(標頭檔的內容類型中擷取的)
Expires: Sat, 02 Sep 2017 05:09:47 GMT
Date: Sat, 02 Sep 2017 05:08:27 GMT
Server: nginx
Content-Type: text/html; charset=GBK
Vary: Accept-Encoding,User-Agent,Accept
Cache-Control: max-age=80
X-Via: 1.1 shq153:8 (Cdn Cache Server V2.0), 1.1 dunyidong75:4 (Cdn Cache Server V2.0)
Connection: close
我們從標頭檔資訊中可知:其內容類型中有charset=GBK,
‘‘‘
print info1.getparam("charset")
#返回結果為:GBK
urllib的操作與使用--1