成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 制作微博抓取 GUI 程序

開(kāi)發(fā) 前端
對(duì)于微博的具體爬取方法,這里就不再展開(kāi)說(shuō)明了,我是把所有微博爬蟲(chóng)的代碼都封裝好了,這里直接調(diào)用暴露的接口即可。

在前面的分享中,我們制作了一個(gè)天眼查 GUI 程序,今天我們?cè)谶@個(gè)的基礎(chǔ)上,繼續(xù)開(kāi)發(fā)新的功能,微博抓取工具,先來(lái)看下最終的效果。

圖片

整體的界面還是繼承自上次的天眼查界面,我們直接來(lái)看相關(guān)功能。

微博功能布局

我們整體的界面布局就是左側(cè)可以選擇不同功能,然后右側(cè)的界面會(huì)對(duì)應(yīng)改變。

創(chuàng)建微博 Widget

對(duì)于右側(cè)界面的切換,我們可以為不同的功能創(chuàng)建不同的 Widget,當(dāng)點(diǎn)擊左側(cè)不同功能按鈕后,對(duì)應(yīng)切換 Widget 即可。

我們新建一個(gè) weibo 相關(guān)的函數(shù),主要用來(lái)界面布局。

def weiboWidget(self):
self.left_button_widget_3 = QtWidgets.QWidget()
self.weiboWebEngine = QWebEngineView()
self.weiboWebEngine2 = QWebEngineView()
self.progressWidget = QtWidgets.QWidget()
self.ciyunWidget = QtWidgets.QWidget()

我們還看到整體界面有一個(gè)詞云,該詞云是通過(guò) matplotlib 渲染的,所以還需要?jiǎng)?chuàng)建 matplotlib 布局。

self.figure = plt.figure(figsize=(7, 2))
self.canvas = FigureCanvasQTAgg(self.figure)
self.gridLayout_weibo.addWidget(self.canvas, 5, 0, 1, 9)

創(chuàng)建微博查詢

接下來(lái)我們創(chuàng)建一個(gè)微博查詢函數(shù),同時(shí)因?yàn)槲覀冞@里需要實(shí)時(shí)更新抓取進(jìn)度條,所以使用了多線程的方式。

def doWeiboQuery(self):
weibo_link = self.lineEdit_weibo_link.text()
weibo_name = self.lineEdit_weibo_name.text()
weibo_page = self.weibo_comboBox.currentText()
if not weibo_link or not weibo_name:
QMessageBox.information(self, "Error", "微博鏈接或者用戶名稱不能為空",
QMessageBox.Yes)
return
self.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_page
self.qth.weibo_link = weibo_link
self.qth.weibo_name = weibo_name
self.qth.start()

而主線程與子線程之間的通信,是使用信號(hào)槽的形式。

def weiboPgbUpdate(self, data):
self.pgb.setValue(data)

def drawCiyun(self):
self.canvas.draw()
self.toolbar = NavigationToolbar2QT(self.canvas, self)
self.gridLayout_weibo.addWidget(self.toolbar, 8, 0, 1, 9)

接下來(lái)就是創(chuàng)建子進(jìn)程函數(shù),函數(shù)主體是爬取微博的代碼。

"""子進(jìn)程微博查詢"""
class WeiBoQueryThread(QThread):
# 創(chuàng)建一個(gè)信號(hào),觸發(fā)時(shí)傳遞當(dāng)前時(shí)間給槽函數(shù)
update_data = pyqtSignal(int)
draw_ciyun = pyqtSignal()
weibo_name = None
weibo_link = None
weibo_page = None
total_pv = 0
timestamp = str(int(time.time()))
def run(self):
# 微博爬蟲(chóng)
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_max
for i in range(int(self.weibo_page)):
my_weibo.weibo_comment(uid, blog_info, str(i), file_name)
self.total_pv += pre_pv
self.update_data.emit(self.total_pv)
print("所有微博評(píng)論爬取完成!")
print("開(kāi)始生成詞云")
font, img_array, STOPWORDS, 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("生成詞云完成")
except Exception as e:
print(e)

而對(duì)于微博的具體爬取方法,這里就不再展開(kāi)說(shuō)明了,我是把所有微博爬蟲(chóng)的代碼都封裝好了,這里直接調(diào)用暴露的接口即可。

詞云制作

對(duì)于詞云的制作,我們還是先通過(guò) jieba 進(jìn)行分詞處理,然后使用 wordcloud 庫(kù)生成詞云即可。

# 詞云相關(guān)
def ciyun(file, without_english=True):
font = r'C:\Windows\Fonts\FZSTK.TTF'
STOPWORDS = {"回復(fù)", "@", "我", "她", "你", "他", "了", "的", "吧", "嗎", "在", "啊", "不", "也", "還", "是",
"說(shuō)", "都", "就", "沒(méi)", "做", "人", "趙薇", "被", "不是", "現(xiàn)在", "什么", "這", "呢", "知道", "鄧"}
df = pd.read_csv(file, usecols=[0])
df_copy = df.copy()
df_copy['comment'] = df_copy['comment'].apply(lambda x: str(x).split()) # 去掉空格
df_list = df_copy.values.tolist()
comment = jieba.cut(str(df_list), cut_all=False)
words = ' '.join(comment)
if without_english:
words = re.sub('[a-zA-Z]', '', words)
img = Image.open('ciyun.png')
img_array = np.array(img)
return font, img_array, STOPWORDS, words

由于很多評(píng)論當(dāng)中會(huì)存在鏈接信息,導(dǎo)致制作的詞云有很多高權(quán)重的英文字符,所有這里也通過(guò)正則進(jìn)行了去英文字符處理。

至此,我們這個(gè)微博查詢功能就完成了!

責(zé)任編輯:武曉燕
相關(guān)推薦

2023-10-30 09:38:12

GUI程序接口方法

2020-12-10 08:20:27

Python微博評(píng)論

2021-12-30 10:28:30

Python 微博評(píng)論

2011-07-25 13:15:22

2011-12-21 16:19:06

網(wǎng)秦手機(jī)安全微博保鏢

2011-12-08 16:31:43

新浪微博開(kāi)放平臺(tái)

2012-04-13 09:51:56

火狐微博助手

2015-04-16 10:35:08

微博微博如何實(shí)現(xiàn)

2011-09-14 14:40:13

專業(yè)化微博IT微博

2015-09-24 18:08:50

微博架構(gòu)架構(gòu)演進(jìn)架構(gòu)

2011-08-15 13:42:57

2013-03-26 10:40:21

2010-10-27 10:02:36

PHP

2012-05-09 14:02:46

HTML5

2017-04-27 11:15:05

新浪微博LNMP架構(gòu)侯青龍

2011-12-20 09:54:43

微博

2010-10-25 10:07:48

jQuery

2013-07-10 14:15:38

php新浪微博

2012-07-12 15:00:26

漏洞賬號(hào)錯(cuò)亂新浪微博

2011-12-08 16:51:55

新浪微博開(kāi)放平臺(tái)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 麻豆视频在线看 | 国产成人网 | 一本色道精品久久一区二区三区 | 午夜私人影院在线观看 | 欧美日韩国产一区二区三区 | 欧美在线一区二区视频 | 国产精品久久久久久久久久免费看 | 精品区一区二区 | 久久久影院 | 亚洲人成在线播放 | 精品二区| 精品一区二区三区四区 | 国产午夜精品一区二区三区四区 | 91精品国产91综合久久蜜臀 | 91精品久久久久久久久中文字幕 | 亚洲精品电影网在线观看 | 精品一区二区三区在线观看 | 一区二区三区四区在线 | 亚洲www| 夜夜草导航| 亚洲精品一区在线观看 | 精品欧美一区二区久久久伦 | 国产精品福利视频 | 亚洲精品成人 | 五月婷婷在线播放 | 黄色免费看 | 欧美精品在线免费观看 | 亚洲视频二区 | 久久国产精品无码网站 | 亚洲视频 欧美视频 | 2019天天操 | 国产精品视频一二三区 | 国产精品免费看 | 亚洲在线久久 | 日韩高清国产一区在线 | 精品伊人久久 | 成人免费共享视频 | av在线三级 | 国产一区二区高清在线 | 精品无码三级在线观看视频 | 久久欧美高清二区三区 |