日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

瀏覽:108日期:2022-06-16 10:56:48
制作NBA數據爬蟲捋順思路

我們在這里選擇的是百度體育帶來的數據,我們在百度當中直接搜索NBA跳轉到網頁,我們可以看到,百度已經為我們提供了相關的數據

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

我們點擊進去后,可以發現這是一個非常簡潔的網址

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

我們看一下這個地址欄,發現毫無規律https://tiyu.baidu.com/live/detail/576O5Zu955S35a2Q6IGM5Lia56%2Bu55CD6IGU6LWbI2Jhc2tldGJhbGwjMjAyMS0wNi0xMyPniLXlo6t2c%2BWspritq%2BiIuQ%3D%3D/from/baidu_aladdin

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

好吧,只能再找找了,我們點擊整個標簽發現,這是一個網址,那就容易多了。

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

這里我們想要獲取的無非就是具體的每一節數據和總分,然后如果用戶還有其他需求的話我們就直接將其推送到百度網址上面來

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

爬取的思路大概就是這樣,首先先訪問主頁面,然后在訪問旗下今天的比賽,最后將比賽結果返回

編寫代碼

首先我們使用REQUESTS來訪問網址

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

我們可以看到,百度沒有做任何限制,直接訪問也可以獲得內容

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

接下來我們使用解析庫進行解析

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

首先我們先將程序定位到Main標簽

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

代碼則是這樣的,運行代碼我們會發現,整個代碼縮進了不少

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

獲取主要的頁面,我們使用FIND函數進行進一步操作

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

我們成功定位到了這個主頁面,接下來就是我們開始爬取最近幾次的比賽信息和詳細頁面了

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

更改代碼,我們直接獲取所有的比賽信息

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

在測試網站的時候,我發現百度竟然使用了AJAX技術,就是說你一次性獲得的網站源代碼可能只有五條,然后要進行再一次加載才能獲取接下來的數據。但是這也對我們程序來說挺好的,我們本來也不需要那么多數據。

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

我們在這里查找了每一個的日期,查找對象為 date,接下來我們把其轉換成字符串,因為百度上面這個日期有縮進,所以我們在后面添加 STRIP() 取消字符串前面的空格。按照這樣的方式獲取比賽地址

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

在這里,我們使用拼接字符串的方法,完成了對最后地址的解析

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

# 程序名稱 : NBAReporter# 制作時間 : 2021年6月13日# 運行環境 : Windows 10import requestsfrom bs4 import BeautifulSoup# 基礎數據定義baidu_nba_url = 'https://tiyu.baidu.com/match/NBA/'request_url = 'https:'nba_dict = {}# 訪問網址nba_res = requests.get(baidu_nba_url)# print(nba_res.text)# 開始使用解析器nba_soup = BeautifulSoup(nba_res.text, 'html.parser')nba_main = nba_soup.main# print(nba_main)nba_div = nba_main.find_all('div', class_ = 'wa-match-schedule-list-wrapper')for i in nba_div:# 獲取比賽時間nba_time = i.find('div', class_ = 'date').string.strip()print(nba_time)# 獲取比賽的次數nba_times = i.find('div', class_ = 'list-num c-color').stringprint(nba_times)# 獲取詳細的比賽地址nba_href = i.find_all('div', class_ = 'wa-match-schedule-list-item c-line-bottom')for url_nba in nba_href:url_nba = url_nba.aurl_href = url_nba['href']real_url = request_url + url_hrefprint(real_url)

接下來我們要開始剩余部分的解析,我們可以看到我們還有一部分的詳細信息沒有爬取,所以我們開始爬取詳細信息

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

按照邏輯繼續編寫代碼

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

然后我們獲取一下這里面的值

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

獲取比賽的相關分數后,我們創建兩個列表,一個列表定義我們等一下需要用到NBA的樣式,另一個列表則存儲今天的日期,最后返回

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

我們已經在這里吧這個方法封裝了,所以我們創建一個新的文件,直接導入即可

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

NBAReporter.py

# 程序名稱 : NBAReporter# 制作時間 : 2021年6月13日# 運行環境 : Windows 10import requestsfrom bs4 import BeautifulSoupdef NBAReporter():# 基礎數據定義baidu_nba_url = 'https://tiyu.baidu.com/match/NBA/'request_url = 'https:'nba_list = []today_list = []# 訪問網址nba_res = requests.get(baidu_nba_url)# print(nba_res.text)# 開始使用解析器nba_soup = BeautifulSoup(nba_res.text, 'html.parser')nba_main = nba_soup.main# print(nba_main)nba_div = nba_main.find_all('div', class_ = 'wa-match-schedule-list-wrapper')for i in nba_div:# 獲取比賽時間today = i.find('div', class_ = 'date').string.strip()# 獲取比賽的次數nba_times = i.find('div', class_ = 'list-num c-color').string# 獲取詳細的比賽地址nba_href = i.find_all('div', class_ = 'wa-match-schedule-list-item c-line-bottom')for url_nba in nba_href:url_nba = url_nba.aurl_href = url_nba['href']real_url = request_url + url_href# print(real_url) # 獲取詳細數據vs_time = url_nba.find('div', class_ = 'font-14 c-gap-bottom-small').stringvs_finals = url_nba.find('div',class_ = 'font-12 c-color-gray').stringteam_row_1 = url_nba.find('div', class_ = 'team-row')team_row_2 = url_nba.find('div', class_ = 'c-gap-top-small team-row')'''team_row_1_png = team_row_1.find('div', class_ = 'inline-block')['style']team_row_2_png = team_row_2.find('div', class_ = 'inline-block')['style']print(team_row_1_png,team_row_2_png)'''team_row_1_name = team_row_1.find('span', class_ = 'inline-block team-name team-name-360 team-name-320 c-line-clamp1').stringteam_row_2_name = team_row_2.find('span', class_ = 'inline-block team-name team-name-360 team-name-320').string# print(team_row_1_name,team_row_2_name)team_row_1_score = team_row_1.find('span', class_ = 'inline-block team-score-num c-line-clamp1').stringteam_row_2_score = team_row_2.find('span', class_ = 'inline-block team-score-num c-line-clamp1').string# print(team_row_1_score,team_row_2_score)'''import re # 導入re庫,不過最好還是在最前面導入,這里是為了演示的需要team_row_1_png_url = re.search(r’background:url(.*)’, team_row_1_png)team_row_1_png_url = team_row_1_png_url.group(1)team_row_2_png_url = re.search(r’background:url(.*)’, team_row_2_png)team_row_2_png_url = team_row_2_png_url.group(1)'''nba = [ today, nba_times,'','',vs_time, vs_finals, team_row_1_name, team_row_2_name,'','', team_row_1_score, team_row_2_score]nba_list.append(nba)today_list.append(today)return nba_list,today_list

這里我們要編寫的是GUI界面的實現程序

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

首先先導入我們運行所需要的庫

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

簡單定義一下我們的代碼,設置標題和其他的一些窗口屬性# self.setWindowOpacity(0.5)這里是設置窗口透明程度的一行代碼,但是經過我的測驗之后,發現這樣子真的對于用戶體驗一點也不好,所以在這里我把它注釋掉了

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

程序主邏輯如上圖所示,我們創建了一個單元布局,然后又創建了和比賽一樣的若干個標簽,最后將函數返回的列表以標簽的形式放在主窗口上面

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

最后創建事件,運行程序,這樣子整個程序就完成了

NBAWindow.py

# 程序名稱 : NBAWindow# 制作時間 : 2021年6月14日# 運行環境 : Windows 10import sysfrom PyQt5.QtCore import *from PyQt5.QtGui import *from PyQt5.QtWidgets import *from NBAReporter import *# 首先創建一個主窗口class NBAWindow(QTabWidget):def __init__(self):super().__init__()self.make_Ui()'''# 兩分鐘自動刷新self.timer = QTimer()self.timer.setInterval(500)self.timer.timeout.connect(self.make_Ui)self.timer.start()'''self.setWindowTitle('NBA數據')self.setGeometry(1440,0,480,300)self.setFixedSize(480,300)self.setWindowIcon(QIcon(’images/nba.png’))self.setStyleSheet('''background-color:red; ''')# self.setWindowOpacity(0.5)self.setWindowFlags(Qt.WindowStaysOnTopHint|Qt.WindowMinimizeButtonHint|Qt.FramelessWindowHint)def make_Ui(self):self.nba,today = NBAReporter()self.tab = 0for a in self.nba:# 設置網格單元布局grid = QGridLayout()self.setLayout(grid)# 開始添加一個標簽tab = QWidget()# 將這個標簽設置為TAB并按照列表中的數值命名self.addTab(tab,today[self.tab])# 獲取循環之后的位置,重寫列表positions = [(i, j) for i in range(3) for j in range(4)]nba_list = self.nba[self.tab]# 開始創建Tab下面的標簽for position, nba in zip(positions, nba_list):#print(nba)# 當時空值時,跳過執行if nba == '':continue# 設置文字樣式label = QLabel('<font color=’black’, size=5><b>%s</b></font>'%nba)grid.addWidget(label, *position)# 設置整個窗口為表格布局tab.setLayout(grid)# grid.update()# 將數值加一self.tab += 1if __name__ == ’__main__’:app = QApplication(sys.argv)window = NBAWindow()window.show()app.exec_()NBAReporter.py

# 程序名稱 : NBAReporter# 制作時間 : 2021年6月13日# 運行環境 : Windows 10import requestsfrom bs4 import BeautifulSoupdef NBAReporter():# 基礎數據定義baidu_nba_url = 'https://tiyu.baidu.com/match/NBA/'request_url = 'https:'nba_list = []today_list = []# 訪問網址nba_res = requests.get(baidu_nba_url)# print(nba_res.text)# 開始使用解析器nba_soup = BeautifulSoup(nba_res.text, 'html.parser')nba_main = nba_soup.main# print(nba_main)nba_div = nba_main.find_all('div', class_ = 'wa-match-schedule-list-wrapper')for i in nba_div:# 獲取比賽時間today = i.find('div', class_ = 'date').string.strip()# 獲取比賽的次數nba_times = i.find('div', class_ = 'list-num c-color').string# 獲取詳細的比賽地址nba_href = i.find_all('div', class_ = 'wa-match-schedule-list-item c-line-bottom')for url_nba in nba_href:url_nba = url_nba.aurl_href = url_nba['href']real_url = request_url + url_href# print(real_url) # 獲取詳細數據vs_time = url_nba.find('div', class_ = 'font-14 c-gap-bottom-small').stringvs_finals = url_nba.find('div',class_ = 'font-12 c-color-gray').stringteam_row_1 = url_nba.find('div', class_ = 'team-row')team_row_2 = url_nba.find('div', class_ = 'c-gap-top-small team-row')'''team_row_1_png = team_row_1.find('div', class_ = 'inline-block')['style']team_row_2_png = team_row_2.find('div', class_ = 'inline-block')['style']print(team_row_1_png,team_row_2_png)'''team_row_1_name = team_row_1.find('span', class_ = 'inline-block team-name team-name-360 team-name-320 c-line-clamp1').stringteam_row_2_name = team_row_2.find('span', class_ = 'inline-block team-name team-name-360 team-name-320').string# print(team_row_1_name,team_row_2_name)team_row_1_score = team_row_1.find('span', class_ = 'inline-block team-score-num c-line-clamp1').stringteam_row_2_score = team_row_2.find('span', class_ = 'inline-block team-score-num c-line-clamp1').string# print(team_row_1_score,team_row_2_score)'''import re # 導入re庫,不過最好還是在最前面導入,這里是為了演示的需要team_row_1_png_url = re.search(r’background:url(.*)’, team_row_1_png)team_row_1_png_url = team_row_1_png_url.group(1)team_row_2_png_url = re.search(r’background:url(.*)’, team_row_2_png)team_row_2_png_url = team_row_2_png_url.group(1)'''nba = [ today, nba_times,'','',vs_time, vs_finals, team_row_1_name, team_row_2_name,'','', team_row_1_score, team_row_2_score]nba_list.append(nba)today_list.append(today)return nba_list,today_list效果演示

Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序

到此這篇關于Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序的文章就介紹到這了,更多相關Python PyQt5數據播報程序內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美日韩一区二区三区在线电影| 欧美专区18| 中文字幕成人| 免费日韩视频| 天堂日韩电影| 香蕉人人精品| 午夜久久影院| 在线精品一区二区| 日韩中文av| 91精品国产经典在线观看| 国产精品亚洲人成在99www| 国产精品免费99久久久| 麻豆精品蜜桃视频网站| 成人在线超碰| 欧美成人亚洲| 日韩午夜一区| 日本亚洲视频在线| 久久精品免视看国产成人| 日韩不卡一区| 99视频+国产日韩欧美| 麻豆亚洲精品| 日韩精品一区二区三区免费视频| 久久精品99久久久| 国产videos久久| 成人亚洲欧美| 亚洲视频www| 日韩成人精品一区二区三区 | 97人人精品| 99精品在线观看| 日韩一区精品字幕| 国产美女撒尿一区二区| 久久av影院| 国产99精品一区| 日韩在线播放一区二区| 国产精品大片| 91精品蜜臀一区二区三区在线 | 日本久久综合| 国产综合视频| 日本不卡视频一二三区| 国产一区二区三区不卡av| 激情综合亚洲| 18国产精品| 国产精品精品| 99国产一区| 欧美黄色一区二区| 激情丁香综合| 日韩av一区二区三区| 精品久久网站| 久久午夜精品| 精品一区91| 欧美色图国产精品| 午夜日本精品| 99在线|亚洲一区二区| 日本成人手机在线| 高潮一区二区| 日韩免费精品| 午夜精品久久久久久久久久蜜桃| 欧美a级一区| 久久狠狠亚洲综合| 免费欧美一区| 国产私拍福利精品视频二区| 久久精品国产亚洲夜色av网站| 亚洲精品日韩久久| 日韩精品2区| 日韩av网站在线免费观看| 免费污视频在线一区| 日韩1区2区日韩1区2区| 亚洲成av人片一区二区密柚| 欧美一区网站| 亚洲综合欧美| 日韩国产激情| 国产欧美日韩视频在线| 国产精品日本欧美一区二区三区| 久久国产视频网| 国产精品毛片| 日韩不卡在线| 国产精品美女在线观看直播| 久久国产精品久久w女人spa| 国产一区二区三区探花| 在线观看一区| 欧美1区免费| 成人在线黄色| 国产一区 二区| 99pao成人国产永久免费视频| 成人在线免费观看网站| 日韩精品三级| 国产精品婷婷| 成人免费网站www网站高清| 午夜亚洲福利| 国产精品毛片一区二区三区| 色老板在线视频一区二区| 久久中文欧美| 国产毛片一区二区三区| 视频一区中文字幕精品| 亚洲欧洲一区| 久久久久亚洲| 久久91导航| 成人在线观看免费视频| 国产黄色一区| 国产乱人伦精品一区| 日韩美女精品| 亚洲精品三级| 亚洲影院天堂中文av色| 久久精品动漫| 四虎4545www国产精品 | 久久国产生活片100| 四虎在线精品| 蜜桃视频一区二区三区| 欧美日韩日本国产亚洲在线 | 国产精品探花在线观看| 一本综合精品| 三级欧美在线一区| 久久福利一区| 亚洲女同一区| 99tv成人| 欧美在线观看视频一区| 日韩国产一区| 91精品国产自产在线观看永久∴| 精品捆绑调教一区二区三区| 日韩免费高清| 日韩啪啪电影网| 日本高清不卡一区二区三区视频 | 国产成人精品一区二区免费看京| 免费精品一区| 久久麻豆视频| 精品九九在线| 在线人成日本视频| 久久精品三级| 亚洲高清成人| 国产精品tv| 欧美国产免费| 久久精品欧洲| 91综合视频| 99成人在线视频| 亚洲午夜黄色| 欧美专区18| 99在线精品免费视频九九视| 亚洲成人免费| 亚洲自拍另类| 蜜臀国产一区二区三区在线播放| 免费看日韩精品| 亚洲日本欧美| 日本在线成人| 国产精品22p| 黑森林国产精品av| 国产91一区| 亚洲伊人精品酒店| 国产精品欧美在线观看| 精品久久97| 国产精品99免费看| 水野朝阳av一区二区三区| 亚洲精品乱码久久久久久蜜桃麻豆| 日韩一区二区三区精品| 国产精品jk白丝蜜臀av小说| 91视频一区| 久久gogo国模啪啪裸体| 日韩三级视频| 麻豆精品久久久| 欧美freesex黑人又粗又大| 黄色亚洲大片免费在线观看| 视频一区日韩| 国产一区2区| 欧美日韩国产高清| 国产亚洲一区| 日韩国产一区二区| 蜜臀久久99精品久久久画质超高清| 日韩国产欧美视频| 精品在线网站观看| 伊人久久婷婷| 欧美精品国产白浆久久久久| 国产美女高潮在线| 国产精品色网| 美女免费视频一区| 国产综合欧美| 欧美日韩一区二区三区不卡视频| 国产精品久久久久久久免费观看 | 亚洲一区观看| 国产一级成人av| 日韩免费看片| 亚洲视频电影在线| 久久精品国产成人一区二区三区| 久久精品免费一区二区三区| 四虎成人精品一区二区免费网站| 超级白嫩亚洲国产第一| 综合激情一区| 中文在线免费视频| 亚洲精品一级| 国产麻豆久久| 国产欧美日韩一区二区三区在线| 国产色播av在线| 激情欧美亚洲| 日韩毛片网站| 中文在线а√天堂| 三级久久三级久久久| 天堂中文av在线资源库| 日韩免费精品| 久久高清免费| 免费在线日韩av| 综合亚洲视频| 色婷婷精品视频|