如何通过网络刮擦运动队的投注线?

时间:2018-11-08 06:16:55

标签: javascript python selenium web-scraping beautifulsoup

是否可以使用Selenium和BeautifulSoup通过Web抓取此网站?

https://www.betonline.ag/sportsbook/basketball/nba

我是网络爬虫的新手,以前没有编码经验。这是我试图淘汰nba球队的尝试:

#import modules

from bs4 import BeautifulSoup
import requests, os
import pandas as pd
from selenium import webdriver

os.chdir('C:\webdrivers')

#enter your user-agent
header = {'User-agent' : 'your user-agent'}
options = webdriver.ChromeOptions(); options.add_argument("--start-maximized")
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://www.betonline.ag/sportsbook/basketball/nba')

#scrape data

soup = BeautifulSoup(driver.page_source, 'html.parser')
driver.quit()


#parse data (Teams)

team = [i.text for i in soup.find_all('td', {'class': 'col_teamname bdevtt'})]

print(team)

上面的代码成功刮除了我想要的团队。

我现在想抓取下注信息:a)点差,b)钱线,c)总积分和d)开始时间。

a)传播:

<td class="hdcp bdevtt ">-9½</td>

想要的信息:-9.5

b)金钱线:

<td class="odds bdevtt moneylineodds displayOdds" cfg="{'a':-500,'d':1.2}">-500</td>

想要的信息:-500

c)总分:

<td class="hdcp bdevtt ">212½</td>

想要的信息:212.5

d)开始时间:

<td rowspan="3" class="col_time bdevtt">09:05 PM</td>

信息通缉:下午09:05

我注意到这4个项目的数据位于td类中。我尝试了类似上面的代码,但是没有成功。不知道这是因为代码在JavaScript中。如果是这样,是否有必要使用BS4和Selenium来提取代码?

任何建议将不胜感激。谢谢您的宝贵时间!

1 个答案:

答案 0 :(得分:2)

尝试下面的代码以获得所需的值:

for tr in soup.find_all('tr', {'class': 'firstline'}):
    print(tr.find('td', {'class': 'col_teamname'}).text)
    print(tr.find('td', {'class': 'hdcp'}).text)
    print(tr.find('td', {'class': 'moneylineodds'}).text)
    print(tr.find('td', {'class': 'col_time'}).text)