欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用python爬取4K壁紙保存到本地文件夾的全過(guò)程

 更新時(shí)間:2024年03月27日 09:00:06   作者:Yan-英杰  
圖片信息豐富多彩,許多網(wǎng)站上都有大量精美的圖片資源,有時(shí)候我們可能需要批量下載這些圖片,而手動(dòng)一個(gè)個(gè)下載顯然效率太低,所以本文給大家介紹了使用python爬取4K壁紙保存到本地文件夾的全過(guò)程,文中有詳細(xì)的代碼示例供大家參考,需要的朋友可以參考下

圖片信息豐富多彩,許多網(wǎng)站上都有大量精美的圖片資源。有時(shí)候我們可能需要批量下載這些圖片,而手動(dòng)一個(gè)個(gè)下載顯然效率太低。因此,編寫(xiě)一個(gè)簡(jiǎn)單的網(wǎng)站圖片爬取程序可以幫助我們高效地獲取所需的圖片資源。 

目標(biāo)網(wǎng)站:

如果出現(xiàn)模塊報(bào)錯(cuò)

c124a1693bfc457ba1f2909ee9d299fc.png

進(jìn)入控制臺(tái)輸入:建議使用國(guó)內(nèi)鏡像源

pip install 模塊名稱(chēng) -i https://mirrors.aliyun.com/pypi/simple

我大致羅列了以下幾種國(guó)內(nèi)鏡像源:

清華大學(xué)
https://pypi.tuna.tsinghua.edu.cn/simple
 
阿里云
https://mirrors.aliyun.com/pypi/simple/
 
豆瓣
https://pypi.douban.com/simple/ 
 
百度云
https://mirror.baidu.com/pypi/simple/
 
中科大
https://pypi.mirrors.ustc.edu.cn/simple/
 
華為云
https://mirrors.huaweicloud.com/repository/pypi/simple/
 
騰訊云
https://mirrors.cloud.tencent.com/pypi/simple/

效果圖:

代碼詳解:

get_imgurl_list(url, imgurl_list) 函數(shù)用來(lái)獲取指定頁(yè)面中的圖片鏈接,并將這些鏈接存儲(chǔ)在 imgurl_list 列表中。

  • 使用 requests.get(url=url, headers=headers) 發(fā)起請(qǐng)求獲取頁(yè)面內(nèi)容。
  • 使用 etree.HTML(html_str) 將頁(yè)面內(nèi)容轉(zhuǎn)換為 etree 對(duì)象,方便后續(xù)使用 XPath 進(jìn)行解析。
  • 通過(guò) XPath 定位到圖片鏈接,并添加到 imgurl_list 中。

get_down_img(imgurl_list) 函數(shù)用來(lái)下載圖片到本地存儲(chǔ)。

  • 創(chuàng)建名為 "美女" 的文件夾用于存儲(chǔ)下載的圖片。
  • 遍歷 imgurl_list 中的圖片鏈接,逐個(gè)下載圖片并保存到本地文件夾中。

if __name__ == '__main__': 部分:

  • 設(shè)置需要爬取的頁(yè)數(shù) page_number = 10
  • 循環(huán)構(gòu)建每一頁(yè)的鏈接,如 https://www.moyublog.com/95-2-2-{i}.html
  • 調(diào)用 get_imgurl_list() 函數(shù)獲取圖片鏈接。
  • 調(diào)用 get_down_img() 函數(shù)下載圖片到本地。

代碼流程:

導(dǎo)入必要的庫(kù)和模塊:

import requests  # 用于發(fā)送HTTP請(qǐng)求
from lxml import etree  # 用于解析HTML頁(yè)面
import time  # 用于控制爬取速度
import os  # 用于文件操作

定義函數(shù)get_imgurl_list(url, imgurl_list)用于獲取圖片鏈接:

def get_imgurl_list(url, imgurl_list):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
    }
    response = requests.get(url=url, headers=headers)
    html_str = response.text
    html_data = etree.HTML(html_str)
    li_list = html_data.xpath("http://ul[@class='clearfix']/li")
    for li in li_list:
        imgurl = li.xpath(".//a/img/@data-original")[0]
        imgurl_list.append(imgurl)
  • 發(fā)送GET請(qǐng)求獲取網(wǎng)頁(yè)內(nèi)容。
  • 將網(wǎng)頁(yè)內(nèi)容轉(zhuǎn)換為etree對(duì)象以便后續(xù)使用xpath進(jìn)行解析。
  • 使用xpath定位所有的li標(biāo)簽,并遍歷每個(gè)li標(biāo)簽獲取圖片鏈接,將鏈接添加到imgurl_list列表中。
  • 定義函數(shù)get_down_img(imgurl_list)用于下載圖片:
def get_down_img(imgurl_list):
    os.mkdir("美女")
    n = 0
    for img_url in imgurl_list:
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'
        }
        img_data = requests.get(url=img_url, headers=headers).content
        img_path = './美女/' + str(n) + '.jpg'
        with open(img_path, 'wb') as f:
            f.write(img_data)
        n += 1
  • 創(chuàng)建名為"美女"的目錄用于存放下載的圖片。
  • 遍歷圖片鏈接列表,逐個(gè)發(fā)送GET請(qǐng)求下載圖片數(shù)據(jù),并將圖片寫(xiě)入本地文件。每張圖片以數(shù)字編號(hào)命名。

主程序部分:

if __name__ == '__main__':
    page_number = 10  # 爬取頁(yè)數(shù)
    imgurl_list = []  # 存放圖片鏈接
    for i in range(0, page_number + 1):
        url = f'https://www.moyublog.com/95-2-2-{i}.html'
        print(url)
        get_imgurl_list(url, imgurl_list)
    get_down_img(imgurl_list)
  • 設(shè)定要爬取的頁(yè)數(shù)page_number為10。
  • 初始化存放圖片鏈接的列表imgurl_list。
  • 循環(huán)構(gòu)建每一頁(yè)的鏈接并調(diào)用get_imgurl_list()函數(shù)獲取圖片鏈接。
  • 最后調(diào)用get_down_img()函數(shù)下載圖片到本地"美女"文件夾。

為什么我們?cè)讷@取數(shù)據(jù)的過(guò)程中需要用到IP池

應(yīng)對(duì)反爬蟲(chóng)策略:許多網(wǎng)站會(huì)采取反爬蟲(chóng)措施,限制單個(gè)IP的訪問(wèn)頻率或次數(shù)。通過(guò)使用數(shù)據(jù)獲取服務(wù),可以輪換多IP來(lái)模仿多個(gè)用戶(hù)訪問(wèn),降低被封禁的風(fēng)險(xiǎn)。

保證穩(wěn)定性:有些數(shù)據(jù)獲取服務(wù)可能存在不穩(wěn)定的情況,包括IP連接速度慢、IP被找到等問(wèn)題。通過(guò)建立數(shù)據(jù)獲取服務(wù),可以預(yù)先準(zhǔn)備多個(gè)可用的IP地址,確保程序在某個(gè)IP不可用時(shí)可以快速切換到其他可用IP,提高爬蟲(chóng)程序的穩(wěn)定性。

提高訪問(wèn)速度:IP池中的多個(gè)IP地址可以并發(fā)使用,實(shí)現(xiàn)多線(xiàn)程或異步請(qǐng)求,從而加快數(shù)據(jù)獲取速度。通過(guò)在數(shù)據(jù)獲取服務(wù)中保持一定數(shù)量的可用IP地址,可以實(shí)現(xiàn)更快速的數(shù)據(jù)抓取。

應(yīng)對(duì)封禁風(fēng)險(xiǎn):有些網(wǎng)站會(huì)根據(jù)某些特定的IP地址或IP段進(jìn)行封禁,如果整個(gè)IP池中的IP都被封禁,可以及時(shí)更新IP池中的IP地址,避免影響爬蟲(chóng)程序的正常運(yùn)行。

降低被識(shí)別的風(fēng)險(xiǎn):當(dāng)爬蟲(chóng)程序使用固定的IP地址進(jìn)行訪問(wèn)時(shí),容易被網(wǎng)站識(shí)別出是爬蟲(chóng)行為。

完整代碼:       

import requests  # python基礎(chǔ)爬蟲(chóng)庫(kù)
from lxml import etree  # 可以將網(wǎng)頁(yè)轉(zhuǎn)換為Elements對(duì)象
import time  # 防止爬取過(guò)快可以睡眠一秒
import os
def get_imgurl_list(url, imgurl_list):
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
    # 發(fā)送請(qǐng)求
    response = requests.get(url=url, headers=headers)
    # 獲取網(wǎng)頁(yè)源碼
    html_str = response.text
    # 將html字符串轉(zhuǎn)換為etree對(duì)象方便后面使用xpath進(jìn)行解析
    html_data = etree.HTML(html_str)
    # 利用xpath取到所有的li標(biāo)簽
    li_list = html_data.xpath("http://ul[@class='clearfix']/li")
    # 打印一下li標(biāo)簽個(gè)數(shù)看是否和一頁(yè)的電影個(gè)數(shù)對(duì)得上
    print(len(li_list))  # 輸出20,沒(méi)有問(wèn)題
    for li in li_list:
        imgurl = li.xpath(".//a/img/@data-original")[0]
        print(imgurl)
        # 寫(xiě)入列表
        imgurl_list.append(imgurl)
def get_down_img(imgurl_list):
    os.mkdir("美女")
    n = 0
    for img_url in imgurl_list:
        headers = {
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36'}
        img_data = requests.get(url=img_url, headers=headers).content  #
        # 拼接圖片存放地址和名字
        img_path = './美女/' + str(n) + '.jpg'
        # 將圖片寫(xiě)入指定位置
        with open(img_path, 'wb') as f:
            f.write(img_data)
        # 圖片編號(hào)遞增
        n = n + 1
 
 
if __name__ == '__main__':
    page_number = 10  # 爬取頁(yè)數(shù)
    imgurl_list = []  # 存放圖片鏈接
    # 1. 循環(huán)構(gòu)建每頁(yè)的鏈接
    for i in range(0, page_number + 1):
        # 頁(yè)數(shù)拼接
        url = f'https://www.moyublog.com/95-2-2-{i}.html'
        print(url)
        # 2. 獲取圖片鏈接
        get_imgurl_list(url, imgurl_list)
    # 3. 下載圖片
    get_down_img(imgurl_list)
 

以上就是使用python爬取4K壁紙保存到本地文件夾的全過(guò)程的詳細(xì)內(nèi)容,更多關(guān)于python爬取壁紙保存到本地的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • NetworkX之Prim算法(實(shí)例講解)

    NetworkX之Prim算法(實(shí)例講解)

    下面小編就為大家分享一篇NetworkX之Prim算法實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • 基于Python編寫(xiě)一個(gè)爆炸信息窗口腳本

    基于Python編寫(xiě)一個(gè)爆炸信息窗口腳本

    這篇文章主要為大家詳細(xì)介紹了如何利用Python語(yǔ)言編寫(xiě)一個(gè)爆炸信息窗口腳本,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下
    2022-11-11
  • 基于python中theano庫(kù)的線(xiàn)性回歸

    基于python中theano庫(kù)的線(xiàn)性回歸

    這篇文章主要為大家詳細(xì)介紹了基于python中theano庫(kù)的線(xiàn)性回歸,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-08-08
  • matplotlib.pyplot畫(huà)圖并導(dǎo)出保存的實(shí)例

    matplotlib.pyplot畫(huà)圖并導(dǎo)出保存的實(shí)例

    今天小編就為大家分享一篇matplotlib.pyplot畫(huà)圖并導(dǎo)出保存的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • Python利用keyboard模塊實(shí)現(xiàn)鍵盤(pán)記錄操作

    Python利用keyboard模塊實(shí)現(xiàn)鍵盤(pán)記錄操作

    模擬鍵盤(pán)操作執(zhí)行自動(dòng)化任務(wù),我們常用的有pyautowin等自動(dòng)化操作模塊。今天介紹的這個(gè)模塊叫做keyboard,它是純Python原生開(kāi)發(fā),編譯時(shí)完全不需要依賴(lài)C語(yǔ)言模塊。一行命令就能完成安裝,非常方便,需要的可以了解一下
    2022-10-10
  • Python的Django框架中消息通知的計(jì)數(shù)器實(shí)現(xiàn)教程

    Python的Django框架中消息通知的計(jì)數(shù)器實(shí)現(xiàn)教程

    通知的計(jì)數(shù)器非常有用,新通知時(shí)+1和讀過(guò)通知后的-1是最基本的功能,這里我們就來(lái)看一下Python的Django框架中消息通知的計(jì)數(shù)器實(shí)現(xiàn)教程
    2016-06-06
  • keras 特征圖可視化實(shí)例(中間層)

    keras 特征圖可視化實(shí)例(中間層)

    今天小編就為大家分享一篇keras 特征圖可視化實(shí)例(中間層),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-01-01
  • Django如何使用第三方服務(wù)發(fā)送電子郵件

    Django如何使用第三方服務(wù)發(fā)送電子郵件

    這篇文章主要介紹了Django如何使用第三方服務(wù)發(fā)送電子郵件,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Python實(shí)戰(zhàn)之整蠱神器合集加速友盡

    Python實(shí)戰(zhàn)之整蠱神器合集加速友盡

    讀萬(wàn)卷書(shū)不如行萬(wàn)里路,學(xué)的扎不扎實(shí)要通過(guò)實(shí)戰(zhàn)才能看出來(lái),本篇文章手把手帶用python來(lái)做幾個(gè)整蠱的小程序,大家可以在過(guò)程中查缺補(bǔ)漏,看看自己掌握程度怎么樣,發(fā)給朋友加固一下友誼
    2021-10-10
  • python基礎(chǔ)字符串str詳解

    python基礎(chǔ)字符串str詳解

    大家好,本篇文章主要講的是python基礎(chǔ)字符串str詳解,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話(huà)記得收藏一下,方便下次瀏覽
    2021-12-12

最新評(píng)論