Python爬蟲文件下載圖文教程
而今天我們要說的內(nèi)容是:如果在網(wǎng)頁中存在文件資源,如:圖片,電影,文檔等。怎樣通過Python爬蟲把這些資源下載下來。
1、怎樣在網(wǎng)上找資源:
就是百度圖片為例,當(dāng)你如下圖在百度圖片里搜索一個(gè)主題時(shí),會(huì)為你跳出一大堆相關(guān)的圖片。
還有如果你想學(xué)英語,找到一個(gè)網(wǎng)站有很多mp3的聽力資源,這些可能都是你想獲取的內(nèi)容。
現(xiàn)在是一個(gè)互聯(lián)網(wǎng)的時(shí)代,只要你去找,基本上能找到你想要的任何資源。

2、怎樣識(shí)別網(wǎng)頁中的資源:
以上面搜索到的百度圖片為例。找到了這么多的內(nèi)容,當(dāng)然你可以通過手動(dòng)一張張的去保存,但這樣做既費(fèi)力又費(fèi)事。你當(dāng)然更希望通過程序自動(dòng)去下載所找到的資源。要想代碼識(shí)別這些資源,就要告訴代碼這些資源有哪些特征,怎樣在網(wǎng)頁中找到它們。
打開瀏覽器的調(diào)試功能(不同瀏覽器可能有差別,不知道的百度一下吧)。找出網(wǎng)頁中你想要下載資源的路徑,如下圖所示。如果有許多類似資源需要下載,則要找到識(shí)別這些資源地址的規(guī)律,然后告訴代碼。

3、資源下載方法一:
代碼很簡單,直接上代碼:
from urllib.request import urlretrieve
urlretrieve("圖片URL", "./image.jpg")
直接通過urlretrieve函數(shù)就把URL對應(yīng)的圖片給下載到當(dāng)前文件夾(./)中了,并把圖片命名為image.jpg。
4、資源下載方法二:
還是直接看代碼:
import requests
resource = requests.get("圖片URL")
with open("./image.jpg", mode="wb") as fh:
fh.write(resource.content)
此下載方法要安裝python的requests庫。從功能上來說與下載方法一是一樣的。python庫的安裝方法用pip就好。很簡單,這里都不啰嗦了。
5、資源下載方法三:
看代碼:
import requests
resource = requests.get("圖片URL", stream=True)
with open("./image.jpg", mode="wb") as fh:
for chunk in resource.iter_content(chunk_size=100):
fh.write(chunk)
此方法與下載方法二的不同之處在于在get方法調(diào)用時(shí)使用了參數(shù)【stream=True】。而在寫入的文件的時(shí)候是分塊寫入的。
什么意思呢:
前兩種方法是把一個(gè)文件全部下載到內(nèi)存后,再一起寫入到硬盤文件中。
方法三是下載一定的量(這里指的是100字節(jié))后,就寫入到硬盤文件中,直到全部寫完。
第三種方法的好處是,如果在下載大容量文件時(shí),不會(huì)造成內(nèi)存的過度使用。
6、資源下載說明一:
上述的代碼都是通過下載圖片資源為例子的,但所有其它資源,如文檔,電影等的下載方式是一樣的。關(guān)鍵是要正確的識(shí)別出網(wǎng)頁中資源所對應(yīng)的URL地址才能夠正確的下載(因?yàn)橛行┵Y源是用的相對路徑或加密后的路徑)。
7、資源下載說明二:
上面例子中的代碼都是下載單一資源的。如果要在同一網(wǎng)頁中下載多個(gè)資源的思路如下:
1. 找出要下載資源的URL,并形成一個(gè)資源集合;
2. 把下載函數(shù)中的資源URL與保存路徑參數(shù)化;
3. 遍歷資源集合,依靠循環(huán)調(diào)用下載函數(shù)來達(dá)到多個(gè)資源下載的目的。
總結(jié):以上就是本次介紹關(guān)于Python爬蟲下載文件的所有知識(shí)點(diǎn)內(nèi)容,感謝大家的閱讀。
- Python使用socket_TCP實(shí)現(xiàn)小文件下載功能
- python實(shí)現(xiàn)簡單的tcp 文件下載
- 如何使用python socket模塊實(shí)現(xiàn)簡單的文件下載
- Python socket實(shí)現(xiàn)的文件下載器功能示例
- Python3 requests文件下載 期間顯示文件信息和下載進(jìn)度代碼實(shí)例
- python多進(jìn)程實(shí)現(xiàn)文件下載傳輸功能
- python2.7實(shí)現(xiàn)FTP文件下載功能
- Python 工具類實(shí)現(xiàn)大文件斷點(diǎn)續(xù)傳功能詳解
相關(guān)文章
Python正則匹配判斷手機(jī)號(hào)是否合法的方法
今天小編就為大家分享一篇Python正則匹配判斷手機(jī)號(hào)是否合法的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
PyQt5 實(shí)現(xiàn)給無邊框widget窗口添加背景圖片
這篇文章主要介紹了PyQt5 實(shí)現(xiàn)給無邊框widget窗口添加背景圖片的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
Linux系統(tǒng)(CentOS)下python2.7.10安裝
這篇文章主要為大家詳細(xì)介紹了Linux系統(tǒng)(CentOS)下python2.7.10安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-09-09
Python實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線
這篇文章主要為大家學(xué)習(xí)介紹了Python如何實(shí)現(xiàn)在不同坐標(biāo)系中繪制曲線,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-07-07
Python成功解決ZeroDivisionError:?division?by?zero的方法過程
在Python編程中,ZeroDivisionError:divisionbyzero是因?yàn)閲L試除以零所導(dǎo)致的常見錯(cuò)誤,這篇文章詳細(xì)介紹了錯(cuò)誤的原因、解決方案,需要的朋友可以參考下2024-09-09
Python Matplotlib數(shù)據(jù)可視化模塊使用詳解
matplotlib是基建立在python之上,適用于創(chuàng)建靜態(tài),動(dòng)畫和交互式可視化,通常與數(shù)據(jù)分析模塊pandas搭配使用,用于數(shù)據(jù)的分析和展示,適用于主流的操作系統(tǒng),如Linux、Win、Mac2022-11-11

