三十行程式碼教你批量爬取某網站妹紙圖

Mr.Q*發表於2020-11-30

寫在前面

  晚上逛B站的時候,看到這個視訊,我啪的一下就點進去了,很快啊。於是重新復現了功能並做了些小優化,今天分享給大家。還是老規矩在文末會附上完整程式碼,需要的小夥伴自取就好了,能幫助到你的話別忘了點贊關注喔~

  鄭重宣告:本人目前僅在CSDN這一個平臺釋出文章,其他小夥伴如果想轉載 或者引用請註明引用來源,未經許可不得直接搬運,請尊重創作人的勞動成果,謝謝!

在這裡插入圖片描述

一、需求分析

  爬取網站的小姐姐圖片,並儲存在指定目錄

  網站連結: https://www.vmgirls.com/13344.html

效果圖如下:

在這裡插入圖片描述

二、程式設計思路

  在爬取網頁時首先要的就是對網頁進行分析,這裡我主要需要的是兩個部分,一個是這組圖的名稱,用來做檔名;另一個是圖片連結,用來下載圖片。

通過對原始碼觀察我發現組圖的名稱在這個<h1>的標籤裡<h1 class="post-title h1">少女情懷總是詩</h1>,圖片連結的話在這個<a>標籤中<a href="//static.vmgirls.com/image/2019/12/2019122210292813-scaled.jpeg" alt="少女情懷總是詩" title="少女情懷總是詩"><img alt="少女情懷總是詩-唯美女生" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" data-src="//static.vmgirls.com/image/2019/12/2019122210292813-scaled.jpeg" data-nclazyload=true data-pagespeed-lsc-url="https://static.vmgirls.com/image/2019/12/2019122210292813-scaled.jpeg"></a>好了找到要爬取內容的所在地之後那麼就很簡單了,因為我比較擅長re庫,所以這裡用正規表示式來進行網頁解析,完整程式碼在下邊給出。

三、完整程式碼

import requests
import re
import time
import os

#獲取網頁
kv = {'user-agent':'Mozilla/5.0'}
response = requests.get("https://www.vmgirls.com/13344.html" , headers = kv)
html = response.text

#解析網頁
dir_name = re.findall('<h1 class="post-title h1">(.*?)</h1>',html)[-1] #作為檔名
if not os.path.exists(dir_name):
    os.mkdir(dir_name)

urls = re.findall('<a href="(.*?)" alt="少女情懷總是詩".*?</a>',html)
#print(urls)

#儲存圖片到指定檔案
num = 1
for url in urls:
    time.sleep(1) #設定爬取時間間隔為1s
    #定義圖片的名字
    file_name = url.split('/')[-1]
    response = requests.get('https:' + url , headers = kv) #制定並獲取圖片連結
    with open(dir_name + '/' + file_name,'wb') as f:
        f.write(response.content) #因為圖片是二進位制所以用content寫入
    print("正在爬取第%d張圖片"%(num))
    num = num + 1

f.close()
print("爬取完畢")

  然後就可以看到一張張圖片被下載到本地啦,還在等什麼,趕緊試試吧~

在這裡插入圖片描述

引用源自

B站Python學習者 連結:https://www.bilibili.com/video/BV1qJ411S7F6

  本篇完,如有錯誤歡迎指出~

相關文章