gpt4 book ai didi

python - 无法获取附加到不同参与者的表格内容

转载 作者:太空宇宙 更新时间:2023-11-03 14:36:36 25 4
gpt4 key购买 nike

我正在尝试从网页中获取与不同参与者相关的表格的内容。为了您的理解,我想要的信息已在图像中被删除。目前我的脚本只能给出不同参与者的名字。我也想解析与那些参与者相关的信息。

Website Address

由于内容是动态的,我不得不使用一些可以使用开发工具检索的公共(public) API。

The image 表示信息在该页面中的显示方式。划线的是我想捕获的。

This is API 响应的样子。

到目前为止我已经尝试过:

import re
import requests

url = 'https://www.bet365.com.au/SportsBook.API/web?'

params = {
'lid': '30',
'zid': '0',
'pd': '#AC#B151#C1#D50#E2#F163#',
'cid': '13',
'ctid': '13'
}

r = requests.get(url, params=params,headers={'User-Agent':'Mozilla/5.0'})
games = re.finditer(r'NA=(.*?);', r.text)
for game in games:
if not 'v' in game.group(): continue
print(game.group(1))

我得到的输出如下(部分):

FunPlus Phoenix v Bilibili Gaming
Top Esports v Royal Never Give Up
Moops v Brute
eSuba v eXtatus
CS:GO - V4 Future Sports Festival
PACT v Capri Sun

我希望得到的输出(部分):

26:42    FunPlus Phoenix v Bilibili Gaming    1-1   -      -      21
09:00 Top Esports v Royal Never Give Up - 2.00 1.72 49
12:00 Moops v Brute - 2.10 1.66 17

How can I grab the tabular contents attached to different participants?

PS 此处可见的信息可能与该页面中的信息不同,因为它们每隔几分钟更新一次,我希望像我已经尝试过的那样使用请求来完成任务。

最佳答案

我帮助您编写了与本网站有关的第一个问题的代码。尽管其他 2 个答案使用 Selenium,但这是不必要的,因为网站的 api 端点用于查找游戏。这种方法应该比 Selenium 更快。我能够再次使用正则表达式解析其他信息。但是,在实际网站上,我无法找到您预期输出中所见的“1-1”之类的内容。希望这可以帮助。时间可能有问题,我不确定。

代码

import re
import requests
from datetime import datetime, timedelta
import pandas as pd

url = 'https://www.bet365.com.au/SportsBook.API/web?'

params = {
'lid': '30',
'zid': '0',
'pd': '#AC#B151#C1#D50#E2#F163#',
'cid': '13',
'ctid': '13'
}

r = requests.get(url, params=params, headers={'User-Agent': 'Mozilla/5.0'})

games = re.finditer(r'NA=([\w\s\-._]+? v [\w\s\-._]+?);', r.text)
col_games = []
for game in games:
# if 'v' in game.group() and '-' not in game.group():
col_games.append(game.group(1))

prices_text = re.finditer(r'NA=1;.*?((?:OD=\d+/\d+;(?:.*?))+?)NA=', r.text)
col_1 = []
for text in prices_text:
segments = text.group(1).split('|')
for segment in segments:
price = re.search(r'OD=(\d+/\d+);', segment)
if price:
price = int(eval(price.group(1) + '+1') * 100) / 100
col_1.append(price)

prices_text = re.finditer(r'NA=2;.*?((?:OD=\d+/\d+;(?:.*?))+?)NA=', r.text)
col_2 = []
for text in prices_text:
segments = text.group(1).split('|')
for segment in segments:
price = re.search(r'OD=(\d+/\d+);', segment)
if price:
price = int(eval(price.group(1) + '+1') * 100) / 100
col_2.append(price)

times = re.finditer(r'BC=(\d+);', r.text)
col_times = []
for time in times:
datetime_time = datetime.strptime(time.group(1)[:-2], '%Y%m%d%H%M')
datetime_time = datetime_time + timedelta(hours=-1)
col_times.append(datetime_time.time())


df = pd.DataFrame({'Time': col_times, "Games": col_games, "1": col_1, "2": col_2})
print(df)

输出

        Time                                           Games     1     2
0 19:00:00 DETONA v Falkol 1.25 3.75
1 19:00:00 paiN Gaming v Keyd 1.53 2.37
2 19:00:00 W7M v Bulldozer 1.22 4.00
3 03:00:00 VP Game v Team WE Academy 2.62 1.44
4 05:00:00 Invictus Gaming Young v Top Esports Challenger 1.22 4.00
5 07:00:00 Vici Gaming Potential v FunPlus Phoenix Blaze 1.36 3.00
6 09:00:00 Edward Gaming Youth v Bilibili Gaming Junior 2.00 1.72
7 09:00:00 Gama Dream v LinGan e-Sports 1.80 1.90
8 03:00:00 Royal Club v Suning Gaming-S 1.66 2.10
9 05:00:00 Joy Dream v Oh My Dream 2.37 1.53
10 07:00:00 LNG Academy v Bilibili Gaming Junior 3.25 1.33
11 07:00:00 TS Gaming v Victorious Gaming 1.72 2.00
12 09:00:00 D7G Esports Club v Legend Esport Gaming 3.75 1.25
13 09:00:00 Dominus Esports.Y v Rogue Warriors Shark 2.50 1.50
14 05:00:00 Team WE Academy v Vici Gaming Potential 3.25 1.33
15 07:00:00 87 v Gama Dream 2.00 1.72
16 07:00:00 Invictus Gaming Young v LNG Academy 1.16 4.50
17 09:00:00 FunPlus Phoenix Blaze v VP Game 1.50 2.50
18 09:00:00 Scorpio Game v Young Miracles 3.40 1.30
19 09:00:00 Top Esports v Bilibili Gaming 1.53 2.37
20 08:00:00 FunPlus Phoenix v Royal Never Give Up 1.57 2.25
21 09:30:00 Maru v Solar 1.40 2.75
22 10:15:00 Stats v Rogue 1.57 2.25
23 04:00:00 Classic v RagnaroK 1.22 4.00
24 04:45:00 Dear v Zest 2.62 1.44
25 08:00:00 SANDBOX Gaming v KINGZONE DragonX 1.66 2.10
26 13:00:00 ENCE v Renegades 1.25 3.75
27 16:30:00 Team Vitality v AVANGAR 1.22 4.00
28 13:00:00 NRG v Natus Vincere 1.66 2.10
29 16:30:00 Astralis v Team Liquid 2.00 1.72
30 23:00:00 Vancouver Titans v Seoul Dynasty 1.33 3.25
31 02:00:00 Hangzhou Spark v Los Angeles Gladiators 1.72 2.00
32 08:00:00 MAD Team v G-Rex 1.53 2.37
33 08:00:00 Flash Wolves v Hong Kong Attitude 3.25 1.33
34 19:00:00 Clutch Gaming v FlyQuest 1.25 3.75
35 16:00:00 Flamengo v INTZ 1.16 4.50
36 16:00:00 Fnatic v Schalke 04 1.20 4.33
37 16:00:00 Origen v Splyce 3.50 1.28
38 09:00:00 GAM Esports v Team Flash 1.25 3.75

关于python - 无法获取附加到不同参与者的表格内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57737881/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com