前言
在做完笔趣阁爬虫结束后想起之前看过pyinstaller库可以打包程序,这样即便在另外的没有编译环境的电脑上也可以使用,前两天正好看到一个使用tkinter做界面,实现电话查询的功能的视频,觉得有意思,于是就开始对tkinter的摸索。
1,tkinter
Tkinter 是使用 python 进行窗口视窗设计的模块。Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。作为 python 特定的GUI界面,是一个图像的窗口,tkinter是python 自带的,可以编辑的GUI界面,我们可以用GUI 实现很多直观的功能,比如想开发一个计算器,如果只是一个程序输入,输出窗口的话,是没用用户体验的。所有开发一个图像化的小窗口,就是必要的。
这里是根据我之前写的笔趣阁爬取的代码上修改的,在main函数中创建了tk类
我的界面布局上主要使用了Label,Button,Entry。
设计了包括 搜索,路径,选择,下载的Button,以及,搜索框Entry,和若干Label。
2,pyinstaller
对程序打包会使用到这个库,PyInstaller是python的第三方库,其重要作用是将.py源代码转换成无需源代码的可执行文件,即
.py----PyInstaller----Windows(exe文件)、Linux、Mac OS X
执行命令:
简单理解,前面是生成exe的图标路径,后面是py文件路径。 .ico是图像类型
E:\a-pycharm\爬虫学习>pyinstaller -F -w -i x:\xx\xxx\xxx\x.ico x:\xxx\xxx\xxxx\xxx.py
使用说明:
1,首先在搜索框输入你需要的小说名称,点击搜索后,会打印搜索的内容。
2,路径是可以不选择的,默认会下载在与该exe的同级目录下。
3,鼠标点击你需要的小说,会在搜索内容后面打印出来。
4,最后点击下载即可开始。
!!!!!!!!!!!!!!!!!!最后下载时调用的函数是最复杂的这里还包含爬取免费IP的过程,程序会出现短暂的未响应状态,在开始爬取的时候会恢复正常,这时会打印下载进度。
这里怕侵权小说作者权益,所以全部内容都打了码,怕审核不过。
3,网盘连接
笔趣阁下载连接:
https://pan.baidu.com/s/1YZFczLCGFajDNftZVPRBqA
提取码:zxcv
电话归属地查询连接:
这个是我在网上看视频别人做的电话归属地查询,于是仿做了一个。涉及电话号码便不演示了。
https://pan.baidu.com/s/1G61E5BOfRiYwRP6AVjwg4g
提取码:test
笔趣阁源码
#-*- codeing = utf-8 -*-
# @Time :21/9/23/0023 22:20
# @Author:zx
# @File :笔趣阁.PY
# @sOFTWARE:PyCharm
import requests
from lxml import etree
from getip import getip
import random
from tkinter.filedialog import askdirectory
import tkinter as tk
headers= {
"User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/93.0.4577.63 Safari/537.36"
}
'''
kw输入完成搜索,打印所有的搜索结果
返回选择的书籍的url
'''
def biquge_get():
url = "http://www.b520.cc/modules/article/search.php?searchkey={}".format(e1.get())
book_info = []
r = requests.get(url =url,
headers = headers,
timeout = 30
)
r.encoding = r.apparent_encoding
html = etree.HTML(r.text)
# 获取搜索结果的书名
bookname = html.xpath('//td[@class = "odd"]/a/text()')
bookauthor = html.xpath('//td[@class = "odd"]/text()')
bookurl = html.xpath('//td[@class = "odd"]/a/@href')
print('搜索结果如下:\n')
a = 1
b = 1
for i in bookname:
print(str(a)+':',i,'\t作者:', bookauthor[int(b - 1)])
book_info.append([str(a)+':'+i+' 作者:'+bookauthor[int(b-1)]+'-'+bookurl[int(a-1)]])
a = a + 1
b = b + 2
# print(book_info)
var2 = tk.StringVar()
l4 = tk.Listbox(root, listvariable=var2, width=30, font=2)
for item in book_info:
l4.insert('end', item[0]) # 从最后一个位置开始加入值
l4.grid(row=1, column=1)
l4.place(x=5,y=100,relwidth=0.9,relheight=0.5)
yscrollbar = tk.Scrollbar(l4, command=l4.yview)
yscrollbar.pack(side=tk.RIGHT, fill=tk.Y)
l4.config(yscrollcommand=yscrollbar.set)
#l4声明为全局变量
select_info.x=l4
# c = input('请选择你要下载的小说(输入对应书籍的编号):')
c=1
book_name = str(bookname[int(c) - 1])
# print(book_name, '开始检索章节