天天看點

Python爬取小姐姐美照

Python爬取小姐姐美照

大家好  我是阿喵

今天教大家用如何用爬蟲爬取可愛小姐姐的美照

第一步:現将python環境搭建好,工欲利其事必先利其器!

第二步:尋找目标網站,我選擇的網站是http://www.win4000.com,裡面有一個美女闆塊,裡面有各種小姐姐的照片(你懂的)

Python爬取小姐姐美照

第三步:分析目标網站的html源碼及網頁規則

通過分析我發現,該網頁每個人物的每個圖檔都是

http://www.win4000.com/meinv1_2.html

http://www.win4000.com/meinv1_3.html

http://www.win4000.com/meinv2_1.html

http://www.win4000.com/meinv2_2.html

并且所有圖檔位址都存放在一個中

Python爬取小姐姐美照
# coding:utf-8
from bs4 import BeautifulSoup   #引用BeautifulSoup庫
import requests                 #引用requests
import os                       #os
root = 'D://img//'              #配置存儲路徑,我配置的是自己電腦中的D:/img檔案夾
for page in range(1,1000):      #配置爬取頁碼,我這邊配置的是1000個人的圖檔
    for p in range(1,20):       #配置爬取每個人多少張的參數,我這邊配置的是每個人20張
        url = 'http://www.win4000.com/meinv'+str(page)+'_'+str(p)+'.html'
        r = requests.get(url)                       #使用requests中的get方法擷取整個網頁
        r.encoding='utf-8'                          #設定網頁所使用的編碼方式,錯誤的編碼方式會導緻亂碼
        if r.status_code!=404:                      #判斷生成後的連結是不是能通路,隻有能通路才能爬取下載下傳
            demo = r.text                           #将爬取後的對象通過text方法提取出所有的html
            soup = BeautifulSoup(demo, "html.parser")#使用BeautifulSoup庫進行整合,第二個參數使用lxml一樣的,lxml相容性好較好,速度較快
            text = soup.find_all('img',class_ = 'pic-large')#選取整合後我們需要的部分内容,選取後的資料為list數組
            for img in text:
                imagr_url = img.get('data-original')        #取出img标簽中data-original中的值
                file_name = root + imagr_url.split('/')[-1] #取出圖檔位址中檔案及檔案擴充名與本地存儲路徑進行拼接
                try:
                    if not os.path.exists(root):            #判斷檔案夾是否存在,不存在則建立檔案夾
                        os.mkdir(root)
                    if not os.path.exists(file_name):       #判斷圖檔檔案是否存在,存在則進行提示
                        s = requests.get(imagr_url)         #通過requests.get方式擷取檔案
                        # 使用with語句可以不用自己手動關閉已經打開的檔案流
                        with open(file_name, "wb") as f:  # 開始寫檔案,wb代表寫二進制檔案
                            f.write(s.content)
                        print("爬取完成")
                    else:
                        print("檔案已存在")
                except Exception as e:
                    print("爬取失敗:" + str(e))
           

哈哈哈哈大功告成,以下是成果展示

Python爬取小姐姐美照

總結:

1、該方式爬取為單程序爬取,隻能一張一張爬取

2、進行圖檔請求時一定要注意不要使用之前使用過的變量

3、細心、認真、不浮躁

看完文章如果大家覺得有幫助,記得一鍵三連哦,非常感謝,在這裡還是要推薦下我自己建的Python學習群:609616831,群裡都是學Python的,如果你想學或者正在學習Python ,歡迎你加入,大家都是軟體開發黨,不定期分享幹貨(隻有Python軟體開發相關的),包括我自己整理的一份2020最新的Python進階資料和零基礎教學,歡迎進階中和對Python感興趣的小夥伴加入!

Python爬取小姐姐美照