tk 下载器

from  tkinter import *

import tkinter.filedialog
#新建按钮控件
def newfile():
    #点击了按钮就打印hello
    print('hello')

def openfile():
    pass

def savefile():
    #askdirectory(title='另存为...',initialfile= '未命名.txt',filetype=[('文本文档','*.txt'),('python文件','*.py')])
    filename = tkinter.filedialog.asksaveasfilename(title='另存为...',initialfile= '未命名.txt',filetype=[('文本文档','*.txt'),('python文件','*.py')
                                                                                                    ],defaultextension='.txt')
    #打印文件路径
    print(filename)

    if not filename:
        return
    fn = open(filename,'w')
    fn.write(str(text.get(1.0,END).encode('utf-8')))
    fn.close()
    text.delete(1.0,END)
    root.title(u'%s - 记事本' %filename.split('/') [-1])

    pass



def saveas():
    pass


#窗口
root = Tk()
#标题
root.title('无标题 - 记事本')
#窗口大小
root.geometry('400x300')
#菜单
#顶级
me = Menu()
root.config(menu=me)
#二级菜单
filemenu = Menu(me)
#按钮事件
filemenu.add_command(label='新建',accelerator='Ctrl + N',command=newfile)
filemenu.add_command(label='打开',accelerator='Ctrl + O',command=openfile)
filemenu.add_command(label='保存',accelerator='Ctrl + S',command=savefile)
filemenu.add_command(label='另存为',command=saveas)
filemenu.add_separator()
filemenu.add_command(label='页面设置')
filemenu.add_command(label='打印')
filemenu.add_separator()
filemenu.add_command(label='退出',command=root.quit)
me.add_cascade(label='文件',menu=filemenu)

#编辑区
text = Text()#多行文本框
#页面布局
text.pack(expand=YES,fill=BOTH)

#主循环
#窗口主件放在主循环里面
#每一个按钮对于一个事件必须对于一个变量或函数
root.mainloop()

这里写入字符串后格式就变了不知道什么这啥编码?
有知道的吗?
在这里插入图片描述

 fn.write(str(text.get(1.0,END).encode('utf-8')))
 这有个文件写入错误

文件写入的是str数据,而不是BeautifulSoup
解决:
只需要将BeautifulSoup转化成str格式就成

视频地址

tk

import requests
import os
from tkinter import *
import tkinter as tk
#文件存储
from tkinter.filedialog import askdirectory
from bs4 import BeautifulSoup
import bs4
import tkinter
#存储
def select_path():
    global  save_path
    path_ = askdirectory()
    path.set(path_)
    #保存路径
    save_path = path_
    if not os.path.exists(save_path):
        # 切换到当前目录
        os.chdir(save_path)
        print(f'你选择的存储路径是:{save_path}')
    else:
        os.chdir(save_path)



#爬取
def spider():
    User = page.get()
    print(User)



    urls = 'http://www.crcz.com/touxiang/nv/list_'


    for i in range(1, int(page.get())+1):
        headers = {'user-agent': 'user-agent'}
        url = urls + str(i) + '.html'  # 拼接url
        print(url)
        # 构造请求
        res = requests.get(url, headers=headers)
        res.encoding = res.apparent_encoding
        html = res.text
        soup = BeautifulSoup(html, 'lxml')
        div_img = soup.select('.tx_list>ul>li')
        for img_a in div_img:

            # 图片
            img = img_a.a.img.get('src')
            #print(img)

            # 图片二进制
            img_data = requests.get(url=img, headers=headers).content

            # 图片名称
            img_name = img_a.find('a', class_='txt').get_text()
            print(img_name)


            save_path =  img_name + '.jpg'
            with open(save_path, 'wb') as f:
                f.write(img_data)
                print(img_name, '下载成功')


            #
            #添加数据
            text.insert(END,save_path,img_name)
            #文本框向下滚动
            text.see(END)





#主函数
def main():
    global  page,text,path
    root = Tk()
    root.title('爬虫工具1.0 墨渊')
    # 窗口的大小,后面的加号是窗口在整个屏幕的位置
    root.geometry('810x810')
    path = StringVar()

    # 第二行,用户名标签及输入框
    l_user = Label(root, text='爬取分页:')
    l_user.grid(row=1, column=0)
    #分页
    page = Entry(root)
    page.grid(row=1, column=1)




    #路径
    Label(root, text="目标路径:").grid(row=0, column=0)
    #文件路径
    input1 = Entry(root)
    input1.grid(row=0, column=1)


    Entry(root, textvariable=path).grid(row=0, column=1)
    Button(root, text="路径选择", command=select_path).grid(row=0, column=2)
    # 设置按钮 sticky对齐方式,N S W E
    button1 = Button(root, text='开始下载', command=spider).grid(row=1, column=2)

    # 文本框
    text = Listbox(root, font=('微软雅黑', 15), width=60, height=60)
    text.grid(row=2, columnspan=2)

    root.mainloop()


if __name__ == '__main__':
    main()

在这里插入图片描述

总结难点是tk结合爬虫实现gui界面的交互
布局控件之类
用到的参数
组件–Label
组件–Button 按钮与功能的绑定command 属性接受一个函数名实现按钮交互
Entry(输入框)获取用户信息
get 函数 使用的时候不需要任何参数,它的返回值就是该输入框的内容
第一个写的gui程序 如有不好多多包涵

参数详解参数
https://cloud.tencent.com/developer/article/1858258?from=article.detail.1879196

使用pyinstaller打包模块
注意更改exe默认图标必须要是ico
这里提供一个图片格式转换找一个自己喜欢的图片
http://www.zuohaotu.com/image-to-ico.aspx
pyinstaller -F -w -i 图片名.ico 文件.py

下载器 网盘地址
链接:https://pan.baidu.com/s/1DdSGUGDyYHQ_YZj2qR6omA
提取码:6666

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值