我想从https://www.bovada.lv取消NBA球员的支持投注。我将问题命名为ADVANCED,因为存在多个团队,球员和类别。
以下是请求的HTML代码:
这里的链接将直接带您进入篮球部分: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)
我在代码中找不到任何相应的播放器。我认为伸出援助之手不会有什么坏处。也许有更多经验的人知道该怎么做或可以帮助我朝正确的方向发展。
我是网络爬虫的新手,非常感谢您提供的任何帮助。预先感谢您的宝贵时间!
答案 0 :(得分:1)
此网站使用内部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 -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)