婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

熱門標簽:北京電信外呼系統靠譜嗎 地圖標注視頻廣告 大連crm外呼系統 梅州外呼業務系統 無錫客服外呼系統一般多少錢 洪澤縣地圖標注 百度地圖標注位置怎么修改 高德地圖標注是免費的嗎 老人電話機器人

制作NBA數據爬蟲

捋順思路

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

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

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

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

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

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

編寫代碼

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

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

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

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

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


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

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

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

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

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

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

# 程序名稱 : NBAReporter
# 制作時間 : 2021年6月13日
# 運行環境 : Windows 10

import requests
from 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").string
	print(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.a
		url_href = url_nba["href"]

		real_url = request_url + url_href
		print(real_url) 

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

按照邏輯繼續編寫代碼

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

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

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

NBAReporter.py

# 程序名稱 : NBAReporter
# 制作時間 : 2021年6月13日
# 運行環境 : Windows 10

import requests
from bs4 import BeautifulSoup

def 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.a
			url_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").string
			vs_finals = url_nba.find("div",class_ = "font-12 c-color-gray").string

			team_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").string
			team_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").string
			team_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界面的實現程序

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

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

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

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

NBAWindow.py

# 程序名稱 : NBAWindow
# 制作時間 : 2021年6月14日
# 運行環境 : Windows 10
import sys
from 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 = 0

		for 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 += 1

if __name__ == '__main__':
	app = QApplication(sys.argv)
	window = NBAWindow()
	window.show()
	app.exec_()

NBAReporter.py

# 程序名稱 : NBAReporter
# 制作時間 : 2021年6月13日
# 運行環境 : Windows 10

import requests
from bs4 import BeautifulSoup

def 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.a
			url_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").string
			vs_finals = url_nba.find("div",class_ = "font-12 c-color-gray").string

			team_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").string
			team_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").string
			team_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數據播報程序內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python PyQt5運行程序把輸出信息展示到GUI圖形界面上
  • python3+PyQt5圖形項的自定義和交互 python3實現page Designer應用程序
  • python3+PyQt5實現支持多線程的頁面索引器應用程序
  • python3+PyQt5重新實現QT事件處理程序
  • 基于Python+Pyqt5開發一個應用程序

標簽:岳陽 泉州 洛陽 怒江 長春 清遠 安慶 吉林

巨人網絡通訊聲明:本文標題《Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序》,本文關鍵詞  Python,利用,PyQt5,制作,一個,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序》相關的同類信息!
  • 本頁收集關于Python利用PyQt5制作一個獲取網絡實時NBA數據并播報的GUI程序的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产精品一区二区视频| 风间由美性色一区二区三区| 免费成人性网站| 91麻豆福利精品推荐| 国产日韩三级在线| 精品在线视频一区| 精品视频在线免费看| 亚洲色图制服丝袜| 日韩成人免费电影| 亚洲精品免费在线观看| 亚洲午夜久久久久中文字幕久| 国产一区二区三区免费播放| 日韩精品专区在线| 九色综合国产一区二区三区| 久久综合久色欧美综合狠狠| 国产91精品在线观看| 国产精品免费视频一区| 日本道在线观看一区二区| 亚洲成人第一页| 精品国产免费人成在线观看| 国产精品一二三区| 伊人色综合久久天天人手人婷| 欧美精品亚洲二区| 国产精品18久久久久久久久| 国产精品护士白丝一区av| 欧美日韩色一区| 亚洲精品在线观看视频| 亚洲线精品一区二区三区| 国产成人免费在线视频| 精品国产乱码久久久久久久| av亚洲精华国产精华精华| 亚洲一级在线观看| 日韩无一区二区| 成人激情免费网站| 天天影视涩香欲综合网| 国产日产亚洲精品系列| 欧美色图在线观看| 福利91精品一区二区三区| 亚洲国产三级在线| 国产日韩欧美麻豆| 在线不卡的av| 91精品办公室少妇高潮对白| 狠狠色伊人亚洲综合成人| 亚洲欧美色一区| 国产成人精品免费网站| 亚洲午夜三级在线| 国产人久久人人人人爽| 678五月天丁香亚洲综合网| av一区二区三区四区| 日韩精品中文字幕一区二区三区 | 久久不见久久见免费视频7| 成人欧美一区二区三区黑人麻豆| 欧美一区二区精品久久911| 日本精品视频一区二区三区| 不卡在线视频中文字幕| 国产69精品一区二区亚洲孕妇| 久久久国产一区二区三区四区小说 | 欧美顶级少妇做爰| 色婷婷国产精品综合在线观看| 国产美女视频91| 老司机精品视频在线| 亚洲高清免费视频| 亚洲靠逼com| 国产精品麻豆欧美日韩ww| 久久亚洲精品国产精品紫薇| 日韩午夜在线观看视频| 91精品国产色综合久久不卡蜜臀| 欧美日韩在线一区二区| 欧美偷拍一区二区| 国产资源在线一区| 免费看黄色91| 日本一区二区不卡视频| 久久精品视频在线免费观看| 337p日本欧洲亚洲大胆色噜噜| 日韩精品一区二区三区三区免费 | 亚洲三级电影网站| 国产精品毛片a∨一区二区三区| 精品国产乱码久久久久久浪潮| 日韩免费电影网站| 2023国产精华国产精品| 国产人成一区二区三区影院| 国产精品女上位| 亚洲视频在线一区二区| 一区二区三区中文字幕精品精品| 欧美区在线观看| 精品日韩一区二区三区免费视频| av一区二区久久| 色悠久久久久综合欧美99| 99国产精品久| 色噜噜狠狠色综合欧洲selulu| 91婷婷韩国欧美一区二区| 另类小说色综合网站| 激情伊人五月天久久综合| 国产经典欧美精品| 成人免费视频免费观看| 一本在线高清不卡dvd| 4438亚洲最大| 国产欧美一区二区精品性| 亚洲六月丁香色婷婷综合久久| 亚洲国产精品欧美一二99| 久久不见久久见免费视频1| 一区二区欧美视频| 国产亚洲综合色| 精品一区精品二区高清| 99久久婷婷国产综合精品 | 在线观看国产91| 日韩一级片网站| 欧美国产一区二区| 欧美精品一二三| 国产亚洲欧美在线| 色88888久久久久久影院野外| 欧美乱妇20p| 欧美国产成人精品| 日韩和的一区二区| 成人av中文字幕| 3d成人h动漫网站入口| 国产精品久久久久久福利一牛影视 | 国产精品毛片a∨一区二区三区 | 欧美三级日韩在线| 亚洲一区二区三区在线播放| 欧美老女人第四色| 国内久久精品视频| 中文字幕一区二区在线观看| 欧美视频中文字幕| 日本成人中文字幕在线视频| 精品国产一区a| 91色porny蝌蚪| 天天综合天天做天天综合| 精品国产制服丝袜高跟| jlzzjlzz亚洲女人18| 五月天激情小说综合| 久久久99精品久久| 91美女在线视频| 激情五月激情综合网| 亚洲精品免费看| 久久一夜天堂av一区二区三区| 色综合色综合色综合| 久久99精品久久只有精品| 亚洲女人的天堂| 久久久www成人免费无遮挡大片| 99久久精品国产网站| 蜜桃久久精品一区二区| 中文字幕在线观看一区二区| 69堂精品视频| 色噜噜狠狠成人网p站| 久久精品国产免费看久久精品| 国产精品青草久久| 欧美一卡二卡三卡| 成人精品视频.| 精彩视频一区二区三区| 一区二区在线免费| 国产精品久久久久久久岛一牛影视| 日韩亚洲欧美高清| 欧美美女一区二区在线观看| 色综合一区二区| www.欧美日韩| 国产一二三精品| 蜜桃一区二区三区在线| 亚洲成人在线网站| 一区二区三区av电影| 国产精品久久久久久久裸模| 欧美精品一区二区三区蜜桃视频| 欧美色视频在线观看| 91麻豆精品在线观看| 成人国产在线观看| 成人性生交大片免费看在线播放| 激情五月婷婷综合网| 精品一区免费av| 国产在线国偷精品免费看| 婷婷综合久久一区二区三区| 最好看的中文字幕久久| 国产精品久久久久天堂| 国产日韩精品视频一区| 日本一区二区三区在线观看| 精品国产乱码久久久久久久久 | 日韩女优制服丝袜电影| 欧美日本国产视频| 欧美日韩精品一区视频| 欧美日韩的一区二区| 欧美人xxxx| 欧美zozozo| 国产视频一区二区三区在线观看| 精品久久人人做人人爰| 欧美一激情一区二区三区| 日韩精品一区二区三区四区视频 | 色婷婷一区二区| 91亚洲精品一区二区乱码| 91丨porny丨国产| 欧美视频一区二区| 欧美精品成人一区二区三区四区| 欧美日本在线一区| 精品人在线二区三区| 国产欧美一区二区三区鸳鸯浴| 国产精品伦理一区二区| 亚洲激情网站免费观看| 亚洲成人免费av| 国内精品视频666| 成人av在线一区二区| 91久久国产综合久久| 91精品午夜视频|