是否可以使用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来提取代码?
任何建议将不胜感激。谢谢您的宝贵时间!
答案 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)