吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1230|回复: 7
收起左侧

[求助] python中tkinter模块制作表情包爬取工具遇到的问题

[复制链接]
flower0712 发表于 2020-4-29 10:07

下载情况

下载情况

[Python] 纯文本查看 复制代码
import tkinter as tk
from tkinter.filedialog import askdirectory
import requests
import random
import re

class picture():
    def __init__(self):
        self.root = tk.Tk()
        self.root.title('表情包下载器')
        self.root.geometry('460x230')
        #self.local = ''
        self.txt=tk.Text(self.root).place(x=0,y=50)
        self.seachlocal=tk.Button(self.root,text='选择位置',command=self.selectPath).place(x=0,y=0)
        self.download=tk.Button(self.root,text='开始下载',command=self.download).place(x=300,y=0)
        self.root.mainloop()
    def selectPath(self):
        path_ = askdirectory()

        self.local=path_
    def download(self):
        trouble = 0
        while (1):

            trouble = 0
            n = random.randrange(2, 2600)
            url = (r'http://www.doutula.com/photo/list/?page=%d' % n)
            headers = {
                'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36',

            }
            result = requests.get(url=url, headers=headers).text
            pattern = re.compile('data-original="(.*?)".*?alt="(.*?)"\sclass', re.S)
            image_urls = re.findall(pattern, result)
            for image_url in image_urls:
                image_name = image_url[1]
                image = requests.get(url=image_url[0], headers=headers).content
                try:
                    print('正在下载')
                    with open(r'%s\%s' % (self.local, image_name + '.' + image_url[0].split('.')[-1]), 'wb')as file:
                        file.write(image)
                    print('下载成功')
                except:
                    print('下载错误')
                    trouble += 1
            print('页码%d下载完成\n下载错误%d张' % (n, trouble))
            #s = str('下载错误\n下载错误%d张' % (trouble))
if __name__ == '__main__':
    picture()


程序运行老是无响应但也可以正常下载

程序运行老是无响应但也可以正常下载

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| flower0712 发表于 2020-4-29 10:10
之前有大佬说的
‘tkinter每一帧都不能因为你的程序阻塞,阻塞了就无响应’
不太懂又没有可以讲解一下
逝去的初夏 发表于 2020-4-29 10:29
爬取程序会卡顿导致界面阻塞?分个线程给单独爬取
lizf2019 发表于 2020-4-29 11:00
fanvalen 发表于 2020-4-29 11:10
高端 我不会图形化界面
毛阿毛 发表于 2020-4-29 11:26
[Python] 纯文本查看 复制代码
import threading

..中间略过...

#线程,防卡
def	thread_it(func,	*args):
	'''将函数打包进线程'''
	# 创建
	t =	threading.Thread(target=func, args=args) 
	# 守护 !!!
	t.setDaemon(True) 
	# 启动
	t.start()
	# 阻塞--卡死界面!
	# t.join()


..中间略过..


self.download=tk.Button(self.root,text='开始下载',command=lambda :thread_it(self.download) ).place(x=300,y=0)


这个试试看~~
斩风 发表于 2020-4-29 11:53
化界面有点不懂
 楼主| flower0712 发表于 2020-4-29 19:36
毛阿毛 发表于 2020-4-29 11:26
[mw_shl_code=python,false]import threading

..中间略过...

谢谢大佬了,我对这个模块不太熟悉还得慢慢学
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 17:38

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表