我一直在苦苦掙扎,我是 Python 初學者,我想抓取一個 bookie (bwin),但我無法抓取我想要的資料,我只得到“行程已完成,退出代碼為 0” 沒有別的
這是我寫的代碼
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import Select
import pandas as pd
import time
import pickle
import re
import unittest
options = Options()
options.headless = False
web = 'https://sports.bwin.be/nl/sports/live/voetbal-4'
path = r'C:\Users\Senne\Desktop\Chromedriver\chromedriver.exe'
options.add_argument('window-size=1920x1080')
driver = webdriver.Chrome(path, options=options)
driver.get(web)
Cookies = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, '//*[@id="onetrust-accept-btn-handler"]')))
Cookies.click()
box = driver.find_element_by_xpath('//*[@id="main-view"]/ms-live/ms-live-event-list/div') #livebox
rows = WebDriverWait(box, 10).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'grid-event-wrapper')))
dropdowns = WebDriverWait(driver, 5).until(EC.presence_of_all_elements_located((By.CLASS_NAME, 'grid-dropdown.ms-dropdown')))
Teams = driver.find_elements_by_xpath('//*[@id="main-view"]/ms-live/ms-live-event-list/div/ms-grid/ms-event-group[1]/ms-event/div/a/ms-event-detail/ms-event-name/ms-inline-tooltip/div/div[1]')
Teams_list = []
for p in range(len(Teams)):
Teams_list.append(Teams[p].text)
driver.quit()
if __name__ == '__main__':
unittest.main()
我不知道我做錯了什么
uj5u.com熱心網友回復:
這里有很多修復,但你的代碼對我來說運行良好。
options = Options()
options.headless = False # Not needed. This is the default argument.
接下來,擺脫options.add_argument('window-size=1920x1080'). 我也使用 webdriver-manager,因為它會自動更新,您不必每次都費心獲取路徑。
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install(), options=options)
driver.set_window_size(1920,1080) # You dont need this
接下來,我只是將您的 Teams_list 變數設為生成器,而不是使用 for 回圈。它們在這種情況下是完美的,也是初學者學習的好工具。此外,您不需要使用for p in range(len(Teams))您可以使用,for team in Teams因為您沒有改變任何東西。
Teams = driver.find_elements_by_xpath('//*[@id="main-view"]/ms-live/ms-live-event-list/div/ms-grid/ms-event-group[1]/ms-event/div/a/ms-event-detail/ms-event-name/ms-inline-tooltip/div/div[1]')
Teams_list = [team.text for team in Teams]
最后,您需要列印:
print(Teams_list)
driver.quit()
或保存到檔案。
with open("scrape.txt",'a') as file:
file.write(Teams_list.__str__())
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/394379.html
上一篇:如何使用帶有aria-label的selenium單擊python中的按鈕
下一篇:如何調節滴答圖的數量?
