生活随笔
收集整理的這篇文章主要介紹了
python不间断爬取微博热搜并存储
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Q:想要記錄實時的微博熱搜分析某一類事件的熱度怎么辦?
A: 采用python爬蟲24小時不間斷爬取微博熱搜并存儲到本地。
代碼如下:
"""
Created on Thu Mar 18 14:48:24 2021@author: Administrator
"""
import requests
from bs4
import BeautifulSoup
import time
import pandas
as pd
import oshot_url
= 'https://s.weibo.com/top/summary/'
folderPath
= r
'C:/Users/Administrator/Desktop/weibo_hotness'
if os
.path
.exists
(folderPath
):pass
else:os
.mkdir
(folderPath
)
columns
= []
for i
in range(50):columns
.append
('hot_text%s'%i
)columns
.append
('hot_number%s'%i
)if __name__
== "__main__":pre_date
= '20000101'while 1:try:current_date
= time
.strftime
("%Y%m%d", time
.localtime
())filePath
= folderPath
+ '/%s.csv'%current_date
if current_date
== pre_date
:passelse:today_data
= pd
.DataFrame
(columns
=columns
)now_localtime
= time
.strftime
("%H%M", time
.localtime
())if int(now_localtime
)%5 == 0:news
= []r
= requests
.get
(hot_url
)soup
= BeautifulSoup
(r
.text
, 'lxml')urls_titles
= soup
.select
('#pl_top_realtimehot > table > tbody > tr > td.td-02 > a')hotness
= soup
.select
('#pl_top_realtimehot > table > tbody > tr > td.td-02 > span')for i
in range(len(urls_titles
)-1):title
= urls_titles
[i
+1].get_text
()news
.append
(title
)hotness_number
= hotness
[i
].get_text
()news
.append
(hotness_number
)today_data
.loc
[now_localtime
] = news
if os
.path
.isfile
(filePath
):os
.remove
(filePath
)else:passtoday_data
.to_csv
(filePath
)time
.sleep
(200)else:time
.sleep
(20)pre_date
= current_date
except:time
.sleep
(5)
Q:以上就實現了python爬取微博熱搜,但是要如何24小時不間斷爬取呢?
A:將代碼打包成exe文件放在云服務器上運行。
打包方法:
首先需要將.py文件后綴改為.pyw,這樣程序運行時就不會有窗口產生,而是直接在后臺運行
安裝pyinstaller
pip install pyinstaller
打開anaconda自帶的Anaconda Prompt,將目錄移動到.pyw文件存儲文件夾
cd C
:\Users\Administrator\Desktop\weibo_hotness
執行打包程序
pyinstaller
-F 文件名(帶文件擴展名)
打包完成后生成的dist文件夾下就會有對應的exe文件了,將其發送到云服務器上就可以24小時不間斷運行
參考文獻:參考文獻
本人中部某基科在讀研究生,歡迎對量化交易和python或研究生生活感興趣的同學關注我的個人微信公眾號。
總結
以上是生活随笔為你收集整理的python不间断爬取微博热搜并存储的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。