簡(jiǎn)單爬蟲2 2020-04-20

網(wǎng)絡(luò)圖片的爬取和存儲(chǔ)




如果一個(gè)鏈接是以 .jpg 結(jié)尾的,那么它是一個(gè)圖片,而且它是一個(gè)文件


保存圖片時(shí),我們需要知道圖片所保存的位置,先設(shè)置一個(gè)路徑 path?

假設(shè)圖片保存為abc.jpg這個(gè)名字,但這個(gè)名字后期我們會(huì)做相關(guān)的處理

下面給出我們查到的網(wǎng)絡(luò)圖片的地址

再用get請(qǐng)求捕獲這個(gè) url

返回狀態(tài)碼 200 ,說明這個(gè)時(shí)候 r 已經(jīng)包含了返回的這個(gè)圖片

下面就是保存這個(gè)圖片,圖片是二進(jìn)制的格式,我們通過 with open(path, 'wb') as f:

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? f.write(r.content)

把二進(jìn)制的格式保存為文件

這段代碼的含義就是,我們打開了一個(gè)文件,這個(gè)文件就是我們要存儲(chǔ)的abc.jpg?

并且把它定義為一個(gè)文件標(biāo)識(shí)符 f?

然后我們將返回的內(nèi)容寫到這個(gè)文件中

respons對(duì)象返回的內(nèi)容中r.content表示的是返回內(nèi)容的二進(jìn)制形式

所以我們可以用 f.write(r.content) 將返回二進(jìn)制形式寫到文件中

最后我們將文件關(guān)閉

然后去d盤看abc.jpg這個(gè)文件是不是網(wǎng)上這個(gè)圖片


那么能不能用圖片原來的名字獲取圖片呢

只需要將url中圖片原本的名字最后的圖片文件的名字截取下來,作為我們本地目錄的名字就可以了

這里面我們除了import requests庫之外,,還需要import os 庫

這里面我們給出 url 鏈接,再定義一個(gè)根目錄 root, 我們把根目錄定義為D盤的pics目錄

然后我們把文件的路徑標(biāo)識(shí)為這個(gè)根目錄 root 加上我們 url 鏈接的以反斜杠分割的最后一部分,

其實(shí)這部分就是最后的 jpg 文件

這樣我們的 path 變量包含的就是本地路徑中的一個(gè)文件名稱,而這個(gè)文件名稱與網(wǎng)絡(luò)文件名的最后一部分是相同的

接下來我們以 try 和 except 為框架來獲取網(wǎng)絡(luò)代碼

首先我們用一個(gè) if 來判斷我們的這個(gè)根目錄是否存在,如果不存在,我們要先建立這個(gè)目錄

再判斷這個(gè)文件存不存在,如果文件不存在,我們通過requests get方式從網(wǎng)上獲取相關(guān)文件

代碼的可靠性和穩(wěn)定性非常重要,所以即使在寫簡(jiǎn)單的代碼,也都要考慮它可能出現(xiàn)的問題,并能夠?qū)栴}進(jìn)行處理

視頻,flash,動(dòng)畫等等也可以通過這種方法下載,原理相同,稍作改變即可




IP地址歸屬地的自動(dòng)查詢

如何查詢一個(gè)IP地址是來自于北京還是上海還是美國呢

我們需要找一個(gè)庫


他是通過ip138網(wǎng)站提交IP地址的一個(gè)url鏈接的接口形式

以http開頭的一個(gè)鏈接通過 ip = ipadress 這樣的形式將ipadress作為參數(shù)提交到前面的網(wǎng)頁中,

這個(gè)網(wǎng)頁根據(jù)這個(gè)參數(shù)會(huì)返回一個(gè)數(shù)據(jù)內(nèi)容,就是這個(gè)地址對(duì)應(yīng)的所在的物理位置

我們通過這樣的url接口就可以通過提交ip地址來找到ip地址的歸屬地


我們將剛才解析出來的這個(gè)接口用url變量來表示 url = ?......

然后我們用requests方法提交一個(gè)ip地址

我們?cè)贆z測(cè)一下狀態(tài)碼

200,說明我們的提交的信息被成功的返回了

然后我們?cè)倏匆幌路祷匚谋镜南嚓P(guān)內(nèi)容

r.text[-500:] 這里面我們查詢的是返回文本的最后500個(gè)字節(jié)

當(dāng)返回內(nèi)容非常多的時(shí)候,有時(shí)候會(huì)導(dǎo)致IDLE的失效,所以我們建議在編寫程序然后去檢查返回?cái)?shù)據(jù)的時(shí)候,盡量約束一個(gè)空間,比如后500個(gè)或者前1000個(gè)


只要能通過瀏覽器知道向后臺(tái)提交的鏈接形式,那就可以用python代碼來向服務(wù)器提交

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 個(gè)人學(xué)習(xí)批處理的初衷來源于實(shí)際工作;在某個(gè)迭代版本有個(gè)BS(安卓手游模擬器)大需求,從而在測(cè)試過程中就重復(fù)涉及到...
    Luckykailiu閱讀 4,993評(píng)論 0 11
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,725評(píng)論 0 5
  • 高階函數(shù):將函數(shù)作為參數(shù) sortted()它還可以接收一個(gè)key函數(shù)來實(shí)現(xiàn)自定義的排序,reversec參數(shù)可反...
    royal_47a2閱讀 847評(píng)論 0 0
  • 自言自語:(最近想買一直比較忙,都很少有時(shí)間寫點(diǎn)東西和大家分享,要堅(jiān)持寫點(diǎn)東西啊!) iOS10以后增加了權(quán)限的管...
    xiao小馬哥閱讀 3,189評(píng)論 1 1
  • 我最親愛的,我知道你多愛我。 我也小心翼翼,珍惜這份美好的愛。 我也小心翼翼,好怕打破這份美好。 當(dāng)我在思念里煎熬...
    w5726閱讀 360評(píng)論 0 0

友情鏈接更多精彩內(nèi)容