廢話很少說,趕忙開始這條不歸路吧html
無思路不成器,若是你怎麼想都想不出爬蟲的原理,不妨來看下咱們平時是如何上網的,大概就是這樣:
①點開目標網址→→[可選:登陸/回覆]→→②瀏覽全頁篩選出價值內容→→③若是很喜歡,還會拷貝下載回來python
因此爬蟲歸結起來也就這幾步:chrome
本節學習的requests模塊將會實現二,三步,其餘步驟和注意事項將會在後續文章中展現出來。json
這是瀏覽器自帶的工具,提供抓包和檢查網頁源碼的功能,供使用者分析網頁。也是學爬蟲必需要學會的工具,一個優秀的蟲爸/蟲媽應該花更多的時間在網頁分析和debug上。瀏覽器
使用很是簡單,打開任一瀏覽器(筆者的是google chrome),按F12或鼠標右鍵檢查。服務器
爲何選擇requests,由於它能徹底勝任python自帶的urllib模塊,簡化了沒必要要的功能的同時讓使用更加簡單。cookie
很是簡單,打開cmd,直接pip安裝工具
pip install requests
或pycharm中搜索requests安裝post
首先呈上官方文檔,有中文版,歡迎來啃。
下面主要介紹兩種方法:get和post學習
r = requests.get(url,**args)#返回一個Response對象,咱們能夠從這個對象中獲取全部咱們想要的信息
r = requests.post(url,**args)#也是返回Response對象
get和post方法中有許多參數可使用,部分參數後面會詳解。
payload = {'key1': 'value1', 'key2': 'value2'} r = requests.get("http://httpbin.org/get", params=payload) #至關於目標網址變成了http://httpbin.org/get?key2=value2&key1=value1
從這個對象中獲取全部咱們想要的信息很是簡單,畢竟爬蟲要的數據主要就三種,html源碼,圖片二進制數據,json數據,Response對象一次性知足你三個願望。
r.encoding = 'ISO-8859-1' #指定r.text返回的數據類型,寫在r.text以前。 r.text #默認以unicode形式返回網頁內容,也就是網頁源碼的字符串。 r.content #以二進制形式返回網頁內容,下載圖片時專用。 r.json() #把網頁中的json數據轉成字典並將其返回。 #還有一些不多用到的方法。 r.headers #返回服務器端的headers,字典。 r.status_code #返回鏈接狀態,200正常。
requests 學完後就能夠處處試試了,若是紅了(拋出異常),那大概是服務器拒絕你了,畢竟假裝什麼的還沒提到,服務器知道你是蟲子就把你踢掉了。
import requests r = requets.get('http://cn.python-requests.org/zh_CN/latest/') with open('test.txt','w',encoding = 'utf-8') as file:#編碼要對應 file.write(r.text) #而後打開看看吧,是否是和F12看到的源碼同樣,只不過是把分支全展開了而已。
小提示:並非全部網站的F12源碼和爬取源碼是一致的,網站有動態的,也有靜態的;有防爬蟲的,也有敞開大門任意爬的。關於對策以後會講到。
第一次寫文章,挺累的,我須要作(wan)幾(ji)道(pan)數(you)學(xi)題放鬆一下本身才行。