3 Antworten

Beste Antwort

Sie können diesen Code ausprobieren, um die Übereinstimmungsdetails abzurufen:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC 
import pickle

browser = webdriver.Chrome(executable_path = r'D:/Automation/chromedriver.exe')
browser.get("https://www.betbrain.com/baseball/united-states/mlb/")

wait = WebDriverWait(browser, 30)

wait.until(EC.visibility_of_element_located((By.CSS_SELECTOR, "ul.MatchesList")))

game_names = browser.find_elements_by_css_selector("ul.MatchesList>li a.MatchTitleLink span")

for game in game_names:
   print(game.text)
0
cruisepandey 24 Juni 2018 im 08:48

Verwenden Sie anstelle von langsameren und brüchigeren xpaths CSS-Selektoren.

driver.get('https://www.betbrain.com/baseball/united-states/mlb/')
time.sleep(5)

parent_element = driver.find_element_by_css_selector('div.MatchesListAndHeader > div:nth-child(2) > div:nth-child(1) > ul')

#find all li childs in parent element
child = parent_element.find_elements_by_css_selector('li')

for i in child:
    print(i.text)


driver.quit()

Dies ist nur ein einfaches Skript, das den gesamten Text unformatiert aus der Tabelle auf der Seite abruft.

Beispielausgabe, die ich erhalten habe:

24/06/2018 17:05
Boston Red Sox — Seattle Mariners
United StatesMLB 2018
Home
(1.40)
1.46
1xBet
Away
(2.98)
3.10
Mybet
26
4

United States
MLB 2018
Home
(1.40)
1.46
1xBet

Away
(2.98)
3.10
Mybet
24/06/2018 20:07
Los Angeles Angels — Toronto Blue Jays
United StatesMLB 2018
Over
(1.96)
1.96
1xBet
Under
0
demouser123 24 Juni 2018 im 06:21

Ihr XPath ist unnötig kompliziert. Verwenden Sie CSS-Selektoren. Ich sehe, Sie versuchen, alle Übereinstimmungen li zu erhalten. Dieser li.Match CSS-Selektor sollte dies tun.

matches = driver.find_elements_by_css_selector("li.Match")

Sollte dir alle Streichhölzer bringen.

0
Siddharth Shishulkar 24 Juni 2018 im 09:00