網(wǎng)絡(luò)圖片的爬取和存儲
如果一個鏈接是以 .jpg 結(jié)尾的铺韧,那么它是一個圖片钓丰,而且它是一個文件
保存圖片時疹蛉,我們需要知道圖片所保存的位置磺平,先設(shè)置一個路徑 path?
假設(shè)圖片保存為abc.jpg這個名字靴姿,但這個名字后期我們會做相關(guān)的處理
下面給出我們查到的網(wǎng)絡(luò)圖片的地址
再用get請求捕獲這個 url
返回狀態(tài)碼 200 沃但,說明這個時候 r 已經(jīng)包含了返回的這個圖片
下面就是保存這個圖片,圖片是二進制的格式佛吓,我們通過 with open(path, 'wb') as f:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? f.write(r.content)
把二進制的格式保存為文件
這段代碼的含義就是宵晚,我們打開了一個文件恨旱,這個文件就是我們要存儲的abc.jpg?
并且把它定義為一個文件標識符 f?
然后我們將返回的內(nèi)容寫到這個文件中
respons對象返回的內(nèi)容中r.content表示的是返回內(nèi)容的二進制形式
所以我們可以用 f.write(r.content) 將返回二進制形式寫到文件中
最后我們將文件關(guān)閉
然后去d盤看abc.jpg這個文件是不是網(wǎng)上這個圖片
那么能不能用圖片原來的名字獲取圖片呢
只需要將url中圖片原本的名字最后的圖片文件的名字截取下來,作為我們本地目錄的名字就可以了
這里面我們除了import requests庫之外坝疼,搜贤,還需要import os 庫
這里面我們給出 url 鏈接,再定義一個根目錄 root钝凶, 我們把根目錄定義為D盤的pics目錄
然后我們把文件的路徑標識為這個根目錄 root 加上我們 url 鏈接的以反斜杠分割的最后一部分仪芒,
其實這部分就是最后的 jpg 文件
這樣我們的 path 變量包含的就是本地路徑中的一個文件名稱,而這個文件名稱與網(wǎng)絡(luò)文件名的最后一部分是相同的
接下來我們以 try 和 except 為框架來獲取網(wǎng)絡(luò)代碼
首先我們用一個 if 來判斷我們的這個根目錄是否存在耕陷,如果不存在掂名,我們要先建立這個目錄
再判斷這個文件存不存在,如果文件不存在哟沫,我們通過requests get方式從網(wǎng)上獲取相關(guān)文件
代碼的可靠性和穩(wěn)定性非常重要饺蔑,所以即使在寫簡單的代碼,也都要考慮它可能出現(xiàn)的問題嗜诀,并能夠?qū)栴}進行處理
視頻猾警,flash,動畫等等也可以通過這種方法下載隆敢,原理相同发皿,稍作改變即可
IP地址歸屬地的自動查詢
如何查詢一個IP地址是來自于北京還是上海還是美國呢
我們需要找一個庫
他是通過ip138網(wǎng)站提交IP地址的一個url鏈接的接口形式
以http開頭的一個鏈接通過 ip = ipadress 這樣的形式將ipadress作為參數(shù)提交到前面的網(wǎng)頁中,
這個網(wǎng)頁根據(jù)這個參數(shù)會返回一個數(shù)據(jù)內(nèi)容拂蝎,就是這個地址對應(yīng)的所在的物理位置
我們通過這樣的url接口就可以通過提交ip地址來找到ip地址的歸屬地
我們將剛才解析出來的這個接口用url變量來表示 url = ?......
然后我們用requests方法提交一個ip地址
我們再檢測一下狀態(tài)碼
200穴墅,說明我們的提交的信息被成功的返回了
然后我們再看一下返回文本的相關(guān)內(nèi)容
r.text[-500:] 這里面我們查詢的是返回文本的最后500個字節(jié)
當返回內(nèi)容非常多的時候,有時候會導致IDLE的失效温自,所以我們建議在編寫程序然后去檢查返回數(shù)據(jù)的時候玄货,盡量約束一個空間,比如后500個或者前1000個
只要能通過瀏覽器知道向后臺提交的鏈接形式悼泌,那就可以用python代碼來向服務(wù)器提交