1.安装和认识本次实验所需要的库
re库(正则库,本次实验用于匹配文本)
tkinter库 (GUI库,用于制作可视化界面)
requests库 (网络请求库,用于制作爬虫)
re和tkinter均为python自带库无需安装
requests为第三方库需要自己安装
安装命令为: pip install requests 我这里已经安装好了
安装好后可用命令pip list查看
2.进行爬虫与GUI界面的编写
我们首先进行爬虫编写
def bue(): #创建函数bue
url = ent.get() #获取GUI输入框输入的url
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0'} #UA伪装
pink = requests.get(url=url,headers=headers) #请求
pink.encoding = 'utf-8' #设置编码
obj=re.compile(
r'<td align="center">(?P<ls>.*?)</td>.*?'
r'<td class="al"><a href=".*?" target="_blank" rel="nofollow" itemid=".*?">(?P<tist>.*?)</a></td>.*?'
r'<td>(?P<thousand>.*?)</td>'
,re.S) #正则匹配需要的字符
global s #设置s为全局变量
s = obj.finditer(pink.text) #获取.text
for it in s :
tit = (it.groupdict(),"\n") #换行
txt.insert(END,tit) #将爬取的数据写入GUI中的多行文本框
txt.see(END)
def clearBox():
txt.delete("1.0", "end") #清除多行文本框文本
(?P<ls>.*?) |
要匹配的文本 |
.*? | 换行匹配或贪婪匹配 |
\n | 用于爬取的文本换行 |
进行GUI界面编写
root = Tk()
root.title('测试')
root.geometry('680x530+400+200') #设置长宽和出现位置
label = Label(root,text="请输入:",font=("华文行楷",17)) #设置输入框前面的文本
label.grid() #默认布局
ent = Entry(root, width=40,font=("隶书",17)) #设置输入框
ent.grid(row=0,column=1) #设置布局0排1列
btn1 = Button(root,text="爬取",font=("隶书",15),command=bue) #设置按钮并绑定函数bue
btn1.grid(row=0,column=2,padx=30) #设置布局0排2列,设置左右边距为30
txt = scrolledtext.ScrolledText(root, width=90,height=30) #设置带滚动条的多行文本框
txt.grid(row=1,columnspan=3,pady=25) #设置布局1排横跨3列,上下边距25
btn1 = Button(root, text="Quit",bg='red',font=("隶书",15),command=root.quit) #设置退出按钮
btn1.grid(row=2,column=2) #设置布局2排2列
btn2 = Button(root,text="清空",bg='green',font=("隶书",15),command=clearBox) #设置清空按钮,并绑定clearBox函数
btn2.grid(row=2,column=0) #设置布局2排0列
root.mainloop()
row | 设置控件排 |
column | 设置控件列 |
colimnpady | 设置控件跨列 |
pady | 设置控件上下边距 |
padx | 设置控件左右边距 |
一定要设置边距,不然控件会挤在一起非常不美观
完整代码
import re
import requests
from tkinter import *
from tkinter import scrolledtext
def bue():
url = ent.get()
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/112.0'}
pink = requests.get(url=url,headers=headers)
pink.encoding = 'utf-8'
obj=re.compile(
r'<td align="center">(?P<ls>.*?)</td>.*?'
r'<td class="al"><a href=".*?" target="_blank" rel="nofollow" itemid=".*?">(?P<tist>.*?)</a></td>.*?'
r'<td>(?P<thousand>.*?)</td>'
,re.S)
global s
s = obj.finditer(pink.text)
for it in s :
tit = (it.groupdict(),"\n")
txt.insert(END,tit)
txt.see(END)
def clearBox():
txt.delete("1.0", "end")
root = Tk()
root.title('测试')
root.geometry('680x530+400+200')
label = Label(root,text="请输入:",font=("华文行楷",17))
label.grid()
ent = Entry(root, width=40,font=("隶书",17))
ent.grid(row=0,column=1)
btn1 = Button(root,text="爬取",font=("隶书",15),command=bue)
btn1.grid(row=0,column=2,padx=30)
txt = scrolledtext.ScrolledText(root,width=90,height=30)
txt.grid(row=1,columnspan=3,pady=25)
btn1 = Button(root, text="Quit",bg='red',font=("隶书",15),command=root.quit)
btn1.grid(row=2,column=2)
btn2 = Button(root,text="清空",bg='green',font=("隶书",15),command=clearBox)
btn2.grid(row=2,column=0)
root.mainloop()
运行结果
本次博客就完结了
如果有不懂的兄弟可以在评论区交流文章来源:https://www.toymoban.com/news/detail-439974.html
下篇文章再见(希望三连)文章来源地址https://www.toymoban.com/news/detail-439974.html
到了这里,关于tkinter+爬虫(re库,tkinter库详解)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!