GUI-Python-程序-制造微博抓取图形用户界面 (硅PY球场验收规范)
在前面的分享中,咱们制造了一个天眼查GUI程序,当天咱们在这个的基础上,继续开发新的性能,微博抓取工具,先来看下最终的成果
全体的界面还是承袭自上次的天眼查界面,咱们间接来看相关性能
微博性能规划
咱们全体的界面规划就是左侧可以选用不同性能,而后右侧的界面会对应扭转
创立微博Widget
关于右侧界面的切换,咱们可认为不同的性能创立不同的Widget,当点击左侧不同性能按钮后,对应切换Widget即可
咱们新建一个weibo相关的函数,关键用来界面规划
defweiboWidget(self):self.left_button_widget_3=QtWidgets.QWidget()self.weiboWebEngine=QWebEngineView()self.weiboWebEngine2=QWebEngineView()self.progressWidget=QtWidgets.QWidget()self.ciyunWidget=QtWidgets.QWidget()
咱们还看到全体界面有一个词云,该词云是经过matplotlib渲染的,所以还须要创立matplotlib规划
#matplotlib绘图区域self.figure=plt.figure(figsize=(7,2))self.canvas=FigureCanvasQTAgg(self.figure)#绘图区域放到图层canvas之中self.gridLayout_weibo.addWidget(self.canvas,5,0,1,9)#图层放到pyqt规划之中
创立微博查问
接上去咱们创立一个微博查问函数,同时由于咱们这里须要实时降级抓取进展条,所以经常使用了多线程的方式
defdoWeiboQuery(self):weibo_link=self.lineEdit_weibo_link.text()weibo_name=self.lineEdit_weibo_name.text()weibo_page=self.weibo_comboBox.currentText()ifnotweibo_linkornotweibo_name:QMessageBox.information(self,"Error","微博链接或许用户称号不能为空",QMessageBox.Yes)returnself.weiboWebEngine.load(QUrl(weibo_link))self.qth=WeiBoQueryThread()self.qth.update_data.connect(self.weiboPgbUpdate)self.qth.draw_ciyun.connect(self.drawCiyun)self.qth.weibo_page=weibo_pageself.qth.weibo_link=weibo_linkself.qth.weibo_name=weibo_nameself.qth.start()
而主线程与子线程之间的通讯,是经常使用信号槽的方式
defweiboPgbUpdate(self,data):self.pgb.setValue(data)defdrawCiyun(self):self.canvas.draw()self.toolbar=NavigationToolbar2QT(self.canvas,self)self.gridLayout_weibo.addWidget(self.toolbar,8,0,1,9)
接上去就是创立子进程函数,函数主体是爬取微博的代码
"""子进程微博查问"""classWeiBoQueryThread(QThread):#创立一个信号,触发时传递以后期间给槽函数update_data=pyqtSignal(int)draw_ciyun=pyqtSignal()weibo_name=Noneweibo_link=Noneweibo_page=Nonetotal_pv=0timestamp=str(int(time.time()))defrun(self):#微博爬虫try:file_name=self.weibo_name+"_"+self.timestamp+'comment.csv'my_weibo=weibo_interface.Weibo(self.weibo_name)uid,blog_info=my_weibo.weibo_info(self.weibo_link)pv_max=int(self.weibo_page)pre_pv=100//pv_maxforiinrange(int(self.weibo_page)):my_weibo.weibo_comment(uid,blog_info,str(i),file_name)self.total_pv+=pre_pvself.update_data.emit(self.total_pv)print("一切微博评论爬取成功!")print("开局生成词云")font,img_array,STOPS,words=ciyun(file_name)wc=WordCloud(width=2000,height=1800,background_color='white',font_path=font,mask=img_array,stopwords=STOPWORDS,contour_width=3,contour_color='steelblue').generate(words)plt.imshow(wc)plt.axis("off")self.draw_ciyun.emit()print("生成词云成功")exceptExceptionase:print(e)
而关于微博的详细爬取方法,这里就不再开展说明了,我是把一切微博爬虫的代码都封装好了,这里间接调用泄露的接口即可
词云制造
关于词云的制造,咱们还是先经过jieba启动分词处置,而后经常使用wordcloud库生成词云即可
#词云相关defciyun(file,without_english=True):font=r'C:FontsFZSTK.TTF'STOPWORDS={"回复","@","我","她","你","他","了","的","吧","吗","在","啊","不","也","还","是","说","都","就","没","做","人","赵薇","被","不是","如今","什么","这","呢","知道","邓"}df=pd.read_csv(file,usecols=[0])df_copy=df.copy()df_copy['comment']=df_copy['comment'].ly(lambdax:str(x).split())#去掉空格df_list=df_copy.values.tolist()comment=jieba.cut(str(df_list),cut_all=False)words=''.join(comment)ifwithout_english:words=re.sub('[a-zA-Z]','',words)img=Image.open('ciyun.png')img_array=np.array(img)returnfont,img_array,STOPWORDS,words
由于很多评论当中会存在链接消息,造成制造的词云有很多高权重的英文字符,一切这里也经过正则启动了去英文字符处置
至此,咱们这个微博查问性能就成功了~
Python中GUI的程序有哪些要素呢?
对于 Python 中的 GUI 程序,一般可以从三个要素来考虑,它们是:输入:指用户在界面上进行的交互操作,例如鼠标点击、键盘输入等。 在 Python 的 GUI 程序中,常常使用组件如文本框、按钮、下拉框等来接收用户的输入。 处理:指对用户输入的数据或操作进行处理,一般会包括数据的验证、计算、存储等过程。 在 Python 的 GUI 程序中,可以使用函数、类等来实现数据的处理。 输出:指将处理后的数据或结果输出到界面上,让用户进行查看或操作。 在 Python 的 GUI 程序中,可以使用标签、文本框、列表框等组件来显示处理结果。 总之,Python 中的 GUI 程序需要考虑用户输入、数据处理和结果输出等三个要素,通过合理的设计和使用相应的组件和工具,可以实现用户友好的交互体验和高效的数据处理功能。
python中simpleguitk是什么?
在Python中,SimpleGUI是一个轻量级的图形用户界面(GUI)工具包,它是为那些需要快速、简单地创建GUI应用程序的Python程序员设计的。 SimpleGUI的目标是让创建GUI应用程序变得简单,同时它也提供了足够的功能来满足大多数基本需求。 SimpleGUI包含一个名为SimpleGUITK的模块,它是SimpleGUI的一个扩展,提供了更多的功能和更高级的特性。 SimpleGUITK添加了一些额外的组件和工具,例如自定义绘制、更高级的事件处理、文件选择器、滑动条、菜单、工具提示等等。 它还支持更广泛的使用模式,包括多线程和异步操作。 SimpleGUITK是SimpleGUI的一个扩展,它提供了一些额外的功能和工具,使Python程序员能够更轻松地创建复杂的GUI应用程序。 ♡♡ 有帮助到的话,麻烦采纳哦!♡♡
免责声明:本文转载或采集自网络,版权归原作者所有。本网站刊发此文旨在传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及版权、内容等问题,请联系本网,我们将在第一时间删除。同时,本网站不对所刊发内容的准确性、真实性、完整性、及时性、原创性等进行保证,请读者仅作参考,并请自行核实相关内容。对于因使用或依赖本文内容所产生的任何直接或间接损失,本网站不承担任何责任。