如何完成NBA球员道具的高级网络抓取



我想从https://www.bovada.lv.我把这个问题命名为ADVANCED,因为有多个团队、球员和类别。

以下是请求的HTML代码:

https://pastebin.com/UkY071uV

以下链接将直接带您进入篮球部分:https://www.bovada.lv/sports/basketball.

要开始。。。

NBA球员道具位于篮球部分。如果您单击每场比赛旁边的箭头或">",它将带您进入另一个投注页面。如果玩家道具已经发布,你可以在玩家道具部分的页面底部附近找到它们(注意:道具在游戏开始前发布(。

以下是我正在寻找的一位玩家的数据样本:

Total Points - LeBron James (LAL)
28.5     -115     -115

我想把所有玩家的名字、类别和投注赔率都刮出来。不幸的是,我没有走得太远。到目前为止,我所学的方法都没有成功。

#import modules
from bs4 import BeautifulSoup
import requests, os
from selenium import webdriver
#initiate Selenium
os.chdir('C:webdrivers')
#enter user agent
header = {'User-agent' : 'ENTER USER_AGENT HERE'}
options = webdriver.ChromeOptions(); options.add_argument("--start-maximized")
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.bovada.lv/sports/basketball/nba')
soup = BeautifulSoup(driver.page_source, 'html.parser')
driver.quit()
#attempt at printing soup 
print(soup)

我在代码中找不到任何相应的玩家。我觉得寻求帮助不会有什么坏处。也许有更丰富经验的人知道如何做到这一点,或者可以帮助我朝着正确的方向前进。

我是网络抓取的新手,非常感谢您提供的任何帮助。提前感谢您抽出时间!

此站点使用内部JSON api来获取数据。示例的完整JSON数据可以在这里找到:https://www.bovada.lv/services/sports/event/v2/events/A/description/basketball/nba/los-angeles-lakers-sacramento-kings-201811102200?lang=en

一个使用curl&jq:

curl -s "https://www.bovada.lv/services/sports/event/v2/events/A/description/basketball/nba/los-angeles-lakers-sacramento-kings-201811102200?lang=en" | 
jq '.[0].events[0].displayGroups[] | 
select(.description=="Player Props") | 
.markets[] | 
select(.description=="Total Points - LeBron James (LAL)")' 

使用python:

import requests
r = requests.get('https://www.bovada.lv/services/sports/event/v2/events/A/description/basketball/nba/los-angeles-lakers-sacramento-kings-201811102200?lang=en')
player_props = [
t["markets"]
for t in r.json()[0]["events"][0]["displayGroups"]
if t["description"] == "Player Props"
]
specific_player = [
t
for t in player_props[0]
if t["description"] == "Total Points - LeBron James (LAL)"
]
print(specific_player)

相关内容

  • 没有找到相关文章

最新更新