標籤:unix 安全 網域名稱 ie版本 登陸 http 伺服器 作用 window
問題描述:File "D:\python\Lib\httplib.py", line 417, in _read_status
raise BadStatusLine(line)
首先我們得對這兩行代碼並對此進行解釋
user_agent=‘Mozilla/4.0(compatible;MSIE 5.5; Windows NT)‘
headers ={ ‘User-Agent‘:user_agent}
User-Agent是http協議中的一部分,屬於頭域的組成部分
這是一種向範文網站提供你所使用的瀏覽器類型,作業系統,瀏覽器核心等資訊的標識
通過這個標識,使用者所訪問的網站可以顯示不同的排版從而為使用者提供更好的體驗或者
進行資訊統計
IE版本Mozilla/4.0(compatible;MSIE8.0;Windows NT 6.0)
版本號碼是MSIE之後的數字,比如MSIE 8.0表示ie8,而Window NT 6.1對應作業系統是window7
Windows NT 6.0 對應作業系統 windows vista
Windows NT 5.2 對應作業系統 windows 2003
Windows NT 5.1 對應作業系統 windows xp
Windows NT 5.0 對應作業系統 windows 2000
UNIX/LINUX 為X11代替
Firefox版本Mozilla/5.0(Windows;U;Windows NT 5.2)Gecko/20088070208 Firefox/3.0.1
其中N:表示無安全加密 I表示弱安全加密 U:表示強安全加密,上面的u表示加密等級
Chrome版本Mozilla/5.0(Windows;U;Windows NT 5.2)AppleWebKit/525.13(KHTML,like Gecko)
其中版本號碼是chrome後的數字
[USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; 360SE)
注意以上的User-Agent的作用就是偽裝成瀏覽器修改http包中的header來實現,
此條代碼的試用環境是網站反感爬蟲的到訪
而這條語句本身沒有問題,正如用User_agent來偽裝瀏覽器尋求訪問,在將headers設定成我們偽裝的地址
此時我們又需要知道urllib和urllib2模組的區別和用法
區別:1.在python中urllib和urllib2不可互相代替
2.urllib2是urllib的增強,但是urllib2有urllib沒有的函數
3.urllib2可以用來設定request參數,來修改header的頭,更改user agent
4.urllib支援設定編碼的函數,urllib.urlencode在類比登陸的時候,經常要編碼過後才能登陸,如果不用
第三方完成類比登陸,就需要用urllib
5.urllib2和urllib一起搭配使用.
關於urllib2的介紹
urllib2提供基礎函數urlopen,通過向指定的url發出請求來擷取資料,最簡單的形式就是
import urllib2
response=urllib2.urlopen(‘網頁‘)
html=response.read()
這個過程就是我們平時刷網頁的代碼形式,基於請求響應模型
response=urllib2.urlopen(‘網頁‘)
這個過程實際上是有兩個步驟:
我們指定一個網域名稱並發送請求
request=urllib2.request(‘網頁‘)
伺服器響應用戶端的請求
response=urllib.urlopen(requset)
諤諤扯遠了,開頭的這個問題的原因是在request請求語句中並沒有將headers添加進去,無法構成有效請求,導致請求列表不存在,嗯我是這樣理解的
request = urllib2.Request(url,headers=headers)這樣了之後這個錯誤就消失了,附片
python爬蟲之偽裝瀏覽器