




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
第基于Python實現(xiàn)微博抓取GUI程序目錄前言微博功能布局創(chuàng)建微博Widget創(chuàng)建微博查詢詞云制作結(jié)果展示
前言
在前面的分享中,我們制作了一個天眼查GUI程序,今天我們在這個的基礎(chǔ)上,繼續(xù)開發(fā)新的功能,微博抓取工具,先來看下最終的效果
整體的界面還是繼承自上次的天眼查界面,我們直接來看相關(guān)功能
微博功能布局
我們整體的界面布局就是左側(cè)可以選擇不同功能,然后右側(cè)的界面會對應(yīng)改變
創(chuàng)建微博Widget
對于右側(cè)界面的切換,我們可以為不同的功能創(chuàng)建不同的Widget,當(dāng)點擊左側(cè)不同功能按鈕后,對應(yīng)切換Widget即可
我們新建一個weibo相關(guān)的函數(shù),主要用來界面布局
def
weiboWidget(self):
self.left_button_widget_3
=
QtWidgets.QWidget()
self.weiboWebEngine
=
QWebEngineView()
self.weiboWebEngine2
=
QWebEngineView()
gressWidget
=
QtWidgets.QWidget()
self.ciyunWidget
=
QtWidgets.QWidget()
我們還看到整體界面有一個詞云,該詞云是通過matplotlib渲染的,所以還需要創(chuàng)建matplotlib布局
#
matplotlib
繪圖區(qū)域
self.figure
=
plt.figure(figsize=(7,
2))
self.canvas
=
FigureCanvasQTAgg(self.figure)
#
繪圖區(qū)域放到圖層canvas之中
self.gridLayout_weibo.addWidget(self.canvas,
5,
0,
1,
9)
#
圖層放到pyqt布局之中
創(chuàng)建微博查詢
接下來我們創(chuàng)建一個微博查詢函數(shù),同時因為我們這里需要實時更新抓取進度條,所以使用了多線程的方式
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:
QMessageBrmation(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()
而主線程與子線程之間的通信,是使用信號槽的形式
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)
接下來就是創(chuàng)建子進程函數(shù),函數(shù)主體是爬取微博的代碼
"""子進程微博查詢"""
class
WeiBoQueryThread(QThread):
#
創(chuàng)建一個信號,觸發(fā)時傳遞當(dāng)前時間給槽函數(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):
#
微博爬蟲
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("所有微博評論爬取完成!")
print("開始生成詞云")
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)
而對于微博的具體爬取方法,這里就不再展開說明了,我是把所有微博爬蟲的代碼都封裝好了,這里直接調(diào)用暴露的接口即可
詞云制作
對于詞云的制作,我們還是先通過jieba進行分詞處理,然后使用wordcloud庫生成詞云即可
#
詞云相關(guān)
def
ciyun(file,
without_english=True):
font
=
r'C:\Windows\Fonts\FZSTK.TTF'
STOPWORDS
=
{"回復(fù)",
"@",
"我",
"她",
"你",
"他",
"了",
"的",
"吧",
"嗎",
"在",
"啊",
"不",
"也",
"還",
"是",
"說",
"都",
"就",
"沒",
"做",
"人",
"趙薇",
"被",
"不是",
"現(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
=
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年經(jīng)濟法考試題目及答案
- 護師職業(yè)素養(yǎng)標(biāo)準(zhǔn)的試題及答案
- 護理學(xué)核心知識點復(fù)習(xí)試題及答案
- 行政法學(xué)具體應(yīng)用及試題答案分享
- 行政管理應(yīng)試者的實戰(zhàn)心得試題及答案
- 行政法學(xué)知識體系架構(gòu)試題及答案
- 2025年護士實務(wù)規(guī)范試題及答案
- 總結(jié)提煉2025年衛(wèi)生資格考試試題及答案
- 主管護師考試的潛力挖掘試題及答案
- 行政管理性格分析試題及答案
- 汽車合伙合同協(xié)議書
- 2025年保密法基礎(chǔ)知識考試題庫帶答案(預(yù)熱題)參考答案詳解
- 2024年寶雞市城投資產(chǎn)管理有限公司招聘筆試真題
- 2025夏季安徽蚌埠市東方人力資源有限勞務(wù)派遣人員招聘30人筆試參考題庫附帶答案詳解
- 2025企業(yè)主要負(fù)責(zé)人安全培訓(xùn)考試試題及答案典型題
- (二調(diào))武漢市2025屆高中畢業(yè)生二月調(diào)研考試 語文試卷(含官方答案解析)
- MOOC 創(chuàng)業(yè)基礎(chǔ)-暨南大學(xué) 中國大學(xué)慕課答案
- 人工肝血漿置換術(shù)知情同意書
- (完整版)高中化學(xué)必修2有機化合物試題.doc
- 可填充顏色的中國地圖,世界地圖,各省市地圖填色
- 彩圖——中國各省地質(zhì)圖13四川、重慶、貴州、云南(共12頁)
評論
0/150
提交評論