目錄
,
html = res.read()
三.下載圖片
首頁 後端開發 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的對應關係。這與後面提取圖片的地址所用的方法有關。 看其他圖片對應的程式碼,可以看到它們的格式都是一樣的,也就是都包含在

中。


使用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爬蟲[一] 大量下載妹子圖


#地截取了部分程式碼。

使用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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1666
14
CakePHP 教程
1425
52
Laravel 教程
1328
25
PHP教程
1273
29
C# 教程
1253
24
PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

sublime怎麼運行代碼python sublime怎麼運行代碼python Apr 16, 2025 am 08:48 AM

在 Sublime Text 中運行 Python 代碼,需先安裝 Python 插件,再創建 .py 文件並編寫代碼,最後按 Ctrl B 運行代碼,輸出會在控制台中顯示。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Golang vs. Python:性能和可伸縮性 Golang vs. Python:性能和可伸縮性 Apr 19, 2025 am 12:18 AM

Golang在性能和可擴展性方面優於Python。 1)Golang的編譯型特性和高效並發模型使其在高並發場景下表現出色。 2)Python作為解釋型語言,執行速度較慢,但通過工具如Cython可優化性能。

vscode在哪寫代碼 vscode在哪寫代碼 Apr 15, 2025 pm 09:54 PM

在 Visual Studio Code(VSCode)中編寫代碼簡單易行,只需安裝 VSCode、創建項目、選擇語言、創建文件、編寫代碼、保存並運行即可。 VSCode 的優點包括跨平台、免費開源、強大功能、擴展豐富,以及輕量快速。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

See all articles