爬蟲:模擬瀏覽器向伺服器發出請求
最基礎的的http庫有urlib,httplib2, requests,treq等
3.1使用urllib
python2中有 urllib和urllib2兩個庫
python3中統一為urllib
python內建的http請求庫
包含四個模組
(1)request:他是最基本的http請求模組,可以用來模擬傳送請求
(2)error:異常處理模組,出現錯誤,捕捉異常。
(3)parse:乙個工具模組,提供了許多url處理辦法。比如拆分,解析,合併等
(4)robotparser:主要用來識別**的robots.txt檔案,然後可以判斷哪些**可以爬,哪些**不可以爬。用的比較少。
3.1.1傳送請求
urllib的request模組的具體用法
1.urlopen()
uriopen.request模組提供了最基本的構造http請求的方法
處理授權驗證(authenticaton)
重定向(redirection)
瀏覽器cookies以及其他內容
舉例:抓取python官網
import urllib.request
response = urllib.request.urlopen(『
print(response.read().decode(『utf-8』))
執行出現錯誤,去解決錯誤
nameerror:name』responsr』 is not defined 未定義名稱錯誤
我把作者的**寫複製到geany上執行如下
檔案gbk從utf-8轉換過來時出錯
找到解決方案。
geany中
文件設定檔案編碼,unicode,utf8。
編輯,首選項,檔案,預設編碼utf8。
然後執行結果如下
應該是抓取成功了。我的為什麼沒有成功,用記事本對比一下
馬虎大意,寫錯了乙個字母。繼續執行。
執行成功,簡單的三行**都能錯誤。程式設計師好嚴謹的工作。繼續學習。
接下來要檢視得到的源**都是什麼,提取出來
import urllib.request
response = urllib.request.urlopen(『
print(response.read().decode(『utf-8』))
在找個**的基礎上:加上了type()方法
import urllib.request
response = urllib.request.urlopen(『
print(type(response))
輸出結果和作者的一樣。
httpresponse型別的物件,主要包含read(),readinto(),getheader(name),getheaders(),fileno()等方法,以及msg,version,status,reason,debuglevel,closed等屬性。(概念模糊,我的理解是這個httpresponse包含了上面說的東西吧)
把這個賦值成為response變數,可以呼叫這些方法和屬性。得到返回結果的一系列資訊了。
舉例 呼叫了read()方法得到返回的網頁內容
呼叫status 屬性得到返回的結果狀態碼
我去打**了
import urllib.request
response = urllib.request.urlopen(『
print(response.status)
print(response.getheaders())
print(response.getheader(『server』))
執行結果和作者的完全相同。
小總結:我不知道read()方法怎麼用的,我只看到了status屬性和呼叫了getheader(),可見的還有用getheader()傳遞了乙個引數獲取了server值,結果是nginx,概念很模糊,可能還是小白的原因,對程式了解太少。
今天學習結束,睡覺。程序有些慢。
python自學第5天(MJ培根)
元祖 1 元祖 唯讀列表,兒子不可變,孫子可能變,可以迴圈查詢,可以切片23 tu 11,22,33,alex 原紗央莉 吉澤明步 桃谷繪理香 蒂亞 xiepeigen egon 4 tu 3 tu 3 upper typeerror tuple object does not support it...
第17天 提前的話。
恩。今天發的好早啊,一天看書的效率都太低了。感覺,好累啊。然後,教練的隊伍也跌出金牌行列,感覺也很不舒服。尤其中間到過可以有出線的可能。期間,還是想到那個從二本出來可以做什麼的問題,縱然老師吹到沒邊,但是,他說的都是極其理想的情況下是那樣的,可現實中,他說的那類是不存在的。不說這,全世界都沒全才到每...
python自學第11天爬蟲例項學習
測試返回200 下面展示一些內聯 片。import requests r requests.get url if r.status code 200 raise exception 返回200則進行下一步爬取url import requests r requests.get url if r.st...