中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么用Python+tkinter實現高清圖片保存

發布時間:2022-03-11 16:32:57 來源:億速云 閱讀:363 作者:iii 欄目:開發技術

這篇“怎么用Python+tkinter實現高清圖片保存”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么用Python+tkinter實現高清圖片保存”文章吧。

基本開發環境

pycharm

Python 3.8

主要相關模塊

request,BeautifulSoup,tkinter(Python內置庫,直接導入即可)

先看一下(Python+tkinter(圖形化界面設計))最終效果吧,高清大圖保存到本地電腦了,

(現在只需要在控制臺輸入pyinstaller -F -w 自己的py文件名.py)就可以就能打包成exe放到桌面了。

怎么用Python+tkinter實現高清圖片保存

怎么用Python+tkinter實現高清圖片保存

分析網頁

在爬取之前第一步還是先對網頁進行分析,確定網頁是靜態的還是動態的,知己知彼才好下手,是吧!以避開爬取難點,節約時間。

怎么用Python+tkinter實現高清圖片保存

我們打開網頁右鍵檢查輸入關鍵字發現可以找到圖片的信息,我們大致可以確定這個網站是靜態的。那么我們就可以根據普通的方法對網頁進行抓取。

開始工作

1.1

先是構造個偽造頭防止簡單的的反爬,然后對網頁發起請求,如果我請求的對象得到的狀態碼是200(成功訪問)那么就返回text文本給我。

怎么用Python+tkinter實現高清圖片保存

1.2

網頁請求成功之后我們就可以在網頁分析圖片存放的位置在哪。

怎么用Python+tkinter實現高清圖片保存

通關觀察發現,我們要的圖片儲存在標簽div class=‘list’下面的ul標簽,ul標簽下面li全部是我們需要的圖片。位置我們找到了那么接下來就實例化一個soup對象來找到所有的li標簽,緊接著循環每個li標簽,獲取li標簽里邊標簽b獲取圖片的名字,然后再到img標簽src這個屬性提取圖片鏈接。

怎么用Python+tkinter實現高清圖片保存

下面代碼演示。

怎么用Python+tkinter實現高清圖片保存

1.3

圖片的名字和圖片的鏈接都有了,接下來就是創建存放位置,因為圖片是二進制數據,所以以content的方式請求,最后以wb的形式寫入文件夾。

怎么用Python+tkinter實現高清圖片保存

分析網頁我們不難發現頁面翻頁的規律,只要循環一下就能實現,頁面翻頁實現翻頁爬取。(想要更多翻頁自己改數字吧)

index_2.htm

index_3.htm

index_4.htm

怎么用Python+tkinter實現高清圖片保存

最后就是設置一下tkinter圖形化界面(這里不再過多詳解,可以上博客查看),設計與程序結合一下就完成了。

怎么用Python+tkinter實現高清圖片保存

實現

怎么用Python+tkinter實現高清圖片保存

全部代碼

# @Author : 王同學
import requests
from bs4 import BeautifulSoup
import os
import tkinter as tk    # GUI
import concurrent.futures
import threading



def get_content(url):
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
    response = requests.get(url,headers)
    response.encoding = response.apparent_encoding  # 自動轉碼
    if response.status_code == 200:
        return response.text


def get_data(response):
    soup = BeautifulSoup(response,'lxml')
    all_li = soup.find(class_="list").find('ul')
    for i in all_li.find_all('li'):
        if i.find('b') is not None:
            title = i.find('b').text
        else:
            title = 'NOT'
        images = i.find('a').find('img').get('src')
        save_images(title,images)



def save_csv():
    pass

def save_images(title,images):
    if not os.path.exists('img'):   # 創建文件夾
        os.mkdir('img')
    headers = {'user-agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36'}
    images_data = requests.get(url=images,headers=headers).content
    with open('img\\' + title + '.jpg', mode='wb')as f:
        f.write(images_data)
        print('正在保存===>: ',title)

    # GUI文本框輸入
    qq.insert(tk.INSERT,"正在保存圖片:" + title + '\n')
    qq.yview_moveto(1)
    qq.update()



def main():
    print('===================已經點擊按鈕===========================')
    for i in range(2,11):
        url = f'http://www.netbian.com/index_{i}.htm'  # 循環
        qq.insert(tk.INSERT,f'==========================正在保存第{i}頁的圖片=========================='+ '\n')
        qq.update()
        print(f'============================正在保存第{i}頁的數據內容========================')
        response = get_content(url)
        get_data(response)
    qq.insert(tk.INSERT,'=================================保存結束================================')



# 多線程 防止GUI卡死
def process_it():
    it = threading.Thread(target=main)
    it.setDaemon(True)
    it.start()




if __name__ == '__main__':
    # 設置GUI圖形界面
    windoms = tk.Tk()

    windoms.iconbitmap()

    windoms.title('圖片')
    windoms.geometry('500x500+650+300')

    # labal
    text = tk.Label(windoms,text='圖片小程序',font=('華文新魏',20))
    text.place(x=170,y=10)

    # 按鈕
    button = tk.Button(windoms,text='開始下載',font=(20),width=30,height=4,fg='Violet',bd=8,command=process_it)   # 開始下載
    button.place(x=140,y=80)
    button1 = tk.Button(windoms,text='退出',font=(20),width=30,fg='Violet',height=4,bd=8,command=windoms.quit)  # 退出
    button1.place(x=140, y=180)
    # 文本框
    qq = tk.Text(windoms,state='normal',bg='light cyan',fg='DeepPink')
    qq.place(rely=0.6,relheight=0.4)
    # 顯示窗口
    tk.mainloop()

以上就是關于“怎么用Python+tkinter實現高清圖片保存”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

虹口区| 南京市| 宣威市| 襄城县| 紫阳县| 周口市| 舟曲县| 东兰县| 民权县| 湟中县| 上林县| 舟山市| 永福县| 乌鲁木齐县| 天峻县| 苍溪县| 广丰县| 临城县| 成都市| 来宾市| 海门市| 桂阳县| 丹江口市| 纳雍县| 新宁县| 惠东县| 马龙县| 攀枝花市| 松溪县| 营口市| 蕉岭县| 和顺县| 墨江| 乡宁县| 洞头县| 都匀市| 寿宁县| 甘德县| 南康市| 萨嘎县| 林周县|