Hi~大家好!
上期讲解了一篇简单的新闻爬虫程序:今日讲解如何结合上一期内容进行制作一个简单的GUI可视化窗口,对爬取的内容进行展示。
本文会用到 tkinter 模块,安装可以用 pip 命令进行安装:
pip install tkinter
测试下:
from tkinter import *
# 实例化
root = Tk()
# 标题
root.title('测试')
# 调用mainloop()方法,使得窗口一直存在
mainloop()
这样简单的窗口就完成了。
任务实战
导入模块:
import requests
import re
from lxml import etree
import tkinter as tk # GUI界面模块
from tkinter import *
from tkinter import scrolledtext # 滚动文本框的模块
这里简单的应用函数式编程,先创建个 main 函数,用于设置窗口参数;创建 response_data 函数,用于爬虫以及连接窗口展示:
def response_data():
...
def main():
...
if __name__ == '__main__':
main()
main 函数
设置全局变量 text ,方便后面 response_data 函数调用展示连接文本框。
global text
实例化窗口和设置窗口标题
root = Tk()
root.title('澎湃新闻')
添加滚动文本框,设置 wrap 参数是为了防止英文单词出现断开:
text = scrolledtext.ScrolledText(root, width=83, height=30, wrap=tk.WORD)
columnspan 组件所跨越的列数:
text.grid(row=2, columnspan=2)
设置按钮名称、字体、调用 response_data 函数、对齐方式,对齐方式有 N 、S、 W、 E 四种:
button = Button(root, text='开始', font=("微软雅黑", 10), command=response_data).grid(row=3, column=0, sticky=S)
button = Button(root, text='退出', font=("微软雅黑", 10), command=root.quit).grid(row=3, column=1, sticky=N)
使得窗口一直存在:
mainloop()
设置后窗口这样:
如果想做好看点,可以自己进行精修。
response_data 函数
response_data 函数主要是爬虫模块、以及和窗口模块进行连接。
爬虫模块是上一期内容,而且内容较为简单,这里删除保存参数和一些不必要的参数,保留到提取的数据这一步:
url = f'https://www.thepaper.cn/load_index.jsp?nodeids=25462&topCids=&pageidx=1&isList=true'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36'
}
response = requests.get(url, headers=headers)
href = re.findall('data-id="(.*?)"', response.text)
title = re.findall('alt="(.*?)"', response.text)
for url_li, title_li in zip(href, title):
url_ = f'https://www.thepaper.cn/newsDetail_forward_{url_li}'
res = requests.get(url_, headers=headers)
etrees = etree.HTML(res.text)
text_ = '\n\n'.join(etrees.xpath('.//div[@class="news_txt"]/text()'))
添加数据到文本框:
text.insert(END, title_li + '\n\n')
text.insert(END, text_ + '\n\n')
text.insert(END, '*' * 83 + '\n\n')
# 文本框向下滚动
text.see(END)
# 更新
text.update()
调用主函数:
if __name__ == '__main__':
main()
运行后 点击开始 就能看到最新的新闻了:
版权声明:本文为weixin_49669074原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。