搜尋
首頁後端開發Python教學python爬蟲[一] 大量下載妹子圖

python爬蟲[一] 大量下載妹子圖

Apr 04, 2017 am 10:49 AM
python爬蟲

煎蛋網上的女孩圖專題有著品質很高的美女圖片,今天分享一下用python 批次下載這些妹子圖的方法。了解python 的基本語法,對這篇文章來說,你只要知道如何操作

list

,

for

……in……,如何定義函數就夠了。 ulSoup4。 ##  pip install beautifulsoup4回車運行

##出現Successfully installed 之類的提示訊息就表示安裝已完成。 #ome 和firefox。千多個網頁上的所有圖片,首先你要學會下載一個網頁:)。 練習下載的網址url 是:jandan.net/ooxx/page-2397#comments. 使用chrome 或firefox瀏覽器開啟後,滑鼠右鍵-查看網頁原始碼。位址就包含在這些原始程式碼中,那麼第一步就是下載這些html程式碼。

python爬蟲[一] 大量下載妹子圖

截取了部分程式碼

#使用python 自帶庫urllib.request 來下載網頁。

    import urllib.request    url = 'http://jandan.net/ooxx/page-2397#comments'

## res = urllib.request.urlopen(url)

urllib.request.urlopen()這個函數是幹嘛的呢?  如它的名字一樣,它可以用來打開一個 url 。它既可以接受一個str(我們傳的就是),也可以接受一個 Request物件。這個函數的回傳值

總是可以像 context manager 樣工作的對象,並且自帶 geturl()、info()、getcode()等方法。


其實我們不用管那麼多,只需要記住這個函數可以接受一個網址,然後返回給我們一個包含這個網址所有資訊的物件就行了,我們對這個物件進行操作。

python爬蟲[一] 大量下載妹子圖


現在把 res 物件中的 html程式碼讀出來賦給

變數

html。使用res.read()方法。

html = res.read()python爬蟲[一] 大量下載妹子圖

這時,html中儲存的就是 html原始碼了!


試著

print

(html)



#截取了部分程式碼。

這時你發現結果和滑鼠右鍵-查看網頁原始碼出現的內容不太一樣。原來read()方法的回傳值是 n bytes…這是什麼鬼? 好吧,其實我們是可以解析這個回傳值並得到圖片地址的。但如果你想要得到和瀏覽器中看到的一樣的html 程式碼,可以將上一行程式碼改為 html = res.read().decode('utf-8')

然後print(html)


python爬蟲[一] 大量下載妹子圖


截取了部分程式碼。

OK!一樣了,這是因為 read()的decode('utf-8')可以把read()的回傳值以utf-8編碼。但我們仍使用 html = res.read(),因為其中同樣包含我們需要的資訊。

到目前為止我們只用了4行 python 程式碼,就把網頁 http://jandan.net/ooxx/page-2397#comments  的html程式碼下載儲存到變數html中了。如下:

import urllib.request

#下載網頁

url = 'http://jandan.net/ooxx/page-2397# comments'

res = urllib.request.urlopen(url)

html = res.read()

##二.解析出位址

#下面,使用beautifulsoup4 解析html。 如何確定某張圖片對應的html程式碼在哪裡呢?在該網頁上滑鼠右鍵-檢查。這時左半螢幕是原網頁,右半螢幕是html程式碼和一堆功能

按鈕


python爬蟲[一] 大量下載妹子圖


#Elements 左邊有個選擇箭頭,點選一下變成藍色,再點擊左邊網頁中的圖片,就可以看到右邊html程式碼中自動高亮了一部分程式碼。這部分程式碼就是這張圖片對應的html代碼!這個箭頭就是用來定位網頁中某元素對應的程式碼的。

python爬蟲[一] 大量下載妹子圖


#仔細看這段程式碼:可以看到

src="//wx2.sinaimg.cn/mw600/66b3de17gy1fdrf0wcuscj20p60zktad.jpg"

部分就是這張圖片的位址,src 就是source。 src後面的 style則是它的樣式,不用管它。這時你可以試驗一下,在src前加入http:,造訪http://wx2.sinaimg.cn/mw600/66b3de17gy1fdrf0wcuscj20p60zktad.jpg應該就能看到原來的圖片了。

所以,src對應的內容就是我們需要的圖片連結位址。注意看圖片中,src和圖片位址連結、style和max-width等是類似  

key

-value的對應關係。這與後面提取圖片的地址所用的方法有關。 看其他圖片對應的程式碼,可以看到它們的格式都是一樣的,也就是都包含在
python爬蟲[一] 大量下載妹子圖

中。


使用BeautifulSoup()解析html。除了傳入html,我們也傳了一個'html.parser'參數,這表示我們希望 BeautifulSoup()函數以html的解析方式來解析變數html。 parser是句法分析的意思。

soup = BeautifulSoup(html,'html.parser')

##這行程式碼將html解析成一個soup物件。我們可以很方便地對這個物件進行操作。例如只提取包含'img'的文字內容:


result = soup.find_all('img')

用find_all()方法。

print(result)可以看到result是一個列表,每個元素都是src-圖片位址鍵值對,只不過包含 python爬蟲[一] 大量下載妹子圖等我們不需要的內容。


python爬蟲[一] 大量下載妹子圖


#地截取了部分程式碼。

使用get方法把雙引號中的位址提取出來,並在開頭加上 http:。


links=[]

for content in result:

    links.append

('http:'+content .get('src'))

content.get('src')就是在content中取得鍵src所對應的值,即雙引號中的位址。

links.append()是常見的在清單中新增元素的方法。

print(links)可以看到這個清單裡每個元素都是原來雙引號中的圖片位址。如下圖:


python爬蟲[一] 大量下載妹子圖


# 截取了部分程式碼


使用瀏覽器開啟任何一個位址都能看到對應的圖片! YO!這說明我們就差最後一步了,下載它們!

提取地址部分就完成了。程式碼也是相當的簡潔,如下:###

#解析網頁

from bs4 import BeautifulSoup

soup = BeautifulSoup(html,'html.parser')

result = soup. find_all('img')

links=[]

for content in result:

    links.append('http:'+content.get('src') )

三.下載圖片

最後就是依序存取links中的位址,把圖片下載下來!

在開頭

 import os

#先建立photo資料夾存放下載的圖片,以下程式碼會將photo資料夾建立在這個程式. py檔案所在的位置。

if not os.path.exists('photo'):

    os.makedirs('photo')

我們知道links是個列表,所以最好使用循環來一個一個下載、命名、存放。



i=0

for link in links:

i+=1

    filename ='photo\\'+'photo'+str(i)+'.png'

    with open(filename,'w ') as file:

        urllib.request.urlretrieve(link,filename)

i是循環變量,i+=1是控制循環的語句。

filename為圖片命名,但其實是先建立一個具有此名稱的文件,然後把圖片寫進去。從filename的賦值語句可以看出,'photo\\'說明它位於photo資料夾,後面的'photo'+str(i)則是為了有序,全下載完後會是photo1,photo2,photo3這樣的感覺~ '.png'是後綴。用 + 號連接字串在python中也是常用的做法。

with這兩行語句,將 link中的位址指向的圖片取得到本地,然後存入 filename 。

open(filename,'w'),開啟filename這個資料夾,'w'表示開啟方式是 write 寫入。也就是說在這裡open()接受了兩個參數,一個是檔名(檔路徑),一個是開啟方式。

urllib.request.urlretrieve(link,filename) 的功能是訪問 link 這個鏈接,然後取回一份拷貝放入 filename中。

3部分都寫完後,點擊運行!就能在.py檔案所在路徑發現photo資料夾,裡面全是我們下載的圖片啦~


python爬蟲[一] 大量下載妹子圖



##完整程式碼如下:

import urllib.request

from bs4 import BeautifulSoup

#import os

#下載網頁

url = 'http://jandan.net/ooxx/page-2397#comments'

res = urllib.request.urlopen(url)

#html = res.read()

#解析網頁

soup = BeautifulSoup(html,'html.parser')

result = soup.find_all('img ')

links=[]

for content in result:

#    links.append('http:'+content.get('src'))

#下載並儲存圖片

if not os.path.exists('photo'):

    os.makedirs('photo')

#i=0

for link in links:

    i+=1

    filename ='photo\\'+'photo'+str(i)+'.png'

    with open(filename,'w') as file:

###        urllib.request.urlretrieve(link,filename)#########這個小程式算是面向過程的寫法吧,從上到下,也沒有定義函數。這樣可能對剛入門的新手更易懂一些。 ######妹子圖的連結######http://jandan.net/ooxx/page-2397#comments 只有中間的數字會在1-2XXX間變化。 #########url = 'http://jandan.net/ooxx/page-'+str(i)+'#comments'#########改變i 的值就能批量下載了。可是有評論說頻繁的訪問該網站可能會被封 IP,這點我也不懂,請自行嘗試! ###

以上是python爬蟲[一] 大量下載妹子圖的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
Python的主要目的:靈活性和易用性Python的主要目的:靈活性和易用性Apr 17, 2025 am 12:14 AM

Python的靈活性體現在多範式支持和動態類型系統,易用性則源於語法簡潔和豐富的標準庫。 1.靈活性:支持面向對象、函數式和過程式編程,動態類型系統提高開發效率。 2.易用性:語法接近自然語言,標準庫涵蓋廣泛功能,簡化開發過程。

Python:多功能編程的力量Python:多功能編程的力量Apr 17, 2025 am 12:09 AM

Python因其簡潔與強大而備受青睞,適用於從初學者到高級開發者的各種需求。其多功能性體現在:1)易學易用,語法簡單;2)豐富的庫和框架,如NumPy、Pandas等;3)跨平台支持,可在多種操作系統上運行;4)適合腳本和自動化任務,提升工作效率。

每天2小時學習Python:實用指南每天2小時學習Python:實用指南Apr 17, 2025 am 12:05 AM

可以,在每天花費兩個小時的時間內學會Python。 1.制定合理的學習計劃,2.選擇合適的學習資源,3.通過實踐鞏固所學知識,這些步驟能幫助你在短時間內掌握Python。

Python與C:開發人員的利弊Python與C:開發人員的利弊Apr 17, 2025 am 12:04 AM

Python適合快速開發和數據處理,而C 適合高性能和底層控制。 1)Python易用,語法簡潔,適用於數據科學和Web開發。 2)C 性能高,控制精確,常用於遊戲和系統編程。

Python:時間投入和學習步伐Python:時間投入和學習步伐Apr 17, 2025 am 12:03 AM

學習Python所需時間因人而異,主要受之前的編程經驗、學習動機、學習資源和方法及學習節奏的影響。設定現實的學習目標並通過實踐項目學習效果最佳。

Python:自動化,腳本和任務管理Python:自動化,腳本和任務管理Apr 16, 2025 am 12:14 AM

Python在自動化、腳本編寫和任務管理中表現出色。 1)自動化:通過標準庫如os、shutil實現文件備份。 2)腳本編寫:使用psutil庫監控系統資源。 3)任務管理:利用schedule庫調度任務。 Python的易用性和豐富庫支持使其在這些領域中成為首選工具。

Python和時間:充分利用您的學習時間Python和時間:充分利用您的學習時間Apr 14, 2025 am 12:02 AM

要在有限的時間內最大化學習Python的效率,可以使用Python的datetime、time和schedule模塊。 1.datetime模塊用於記錄和規劃學習時間。 2.time模塊幫助設置學習和休息時間。 3.schedule模塊自動化安排每週學習任務。

Python:遊戲,Guis等Python:遊戲,Guis等Apr 13, 2025 am 12:14 AM

Python在遊戲和GUI開發中表現出色。 1)遊戲開發使用Pygame,提供繪圖、音頻等功能,適合創建2D遊戲。 2)GUI開發可選擇Tkinter或PyQt,Tkinter簡單易用,PyQt功能豐富,適合專業開發。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
1 個月前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它們
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Atom編輯器mac版下載

Atom編輯器mac版下載

最受歡迎的的開源編輯器

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具