[英]how to use driver.get(url) from extracted href list from the page?
我想要 go 到https://www.bookmaker.com.au/sports/soccer ,提取它的足球網址。 然后我想通過 driver.get(url) 對每個網頁進行 go。 我已將其作為一個列表完成,然后它為每個這些 url 提取數據並放置在 pandas 中。 我被困在為每個提取的鏈接獲取 driver.get(url) 。 任何幫助表示贊賞。
driver.get(url) 的 CSS/href:
url = #a[class *= 'matches-filter__region']
import time
import pandas as pd
import webdriver_manager.chrome
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
###########################################################################################################################################################
options = webdriver.ChromeOptions()
options.add_argument('--start-maximized')
options.add_experimental_option("detach", True)
service = Service('driver/chromedriver.exe')
driver = webdriver.Chrome(service=Service(webdriver_manager.chrome.ChromeDriverManager().install()), options=options)
driver.get('https://www.bookmaker.com.au/sports/soccer')
aa = driver.find_elements(By.CSS_SELECTOR, "a[class *= 'matches-filter__region']")
WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.CSS_SELECTOR, "a[class *= 'matches-filter__region']")))
################################################################################################################
for url in aa:
aa = driver.find_elements(By.CSS_SELECTOR, "a[class *= 'matches-filter__region']")
driver.get(aa)
##############################################################################
更新了代碼,我檢查了,它正在工作,導航到同一瀏覽器 window 中的所有 15 個 url:
diff_country_urls = []
for i in range(len(aa)):
diff_country_urls.append(aa[i].get_attribute("href"))
for url in diff_country_urls:
driver.get(url)
使用 VPN 后,我可以連接,但我發現代碼沒有什么問題
你必須在for
-loop 之前得到aa
find
引用瀏覽器的 memory 中的對象,但是當您使用get()
時,它會從 memory 中刪除這些對象,以創建新的 object 從新頁面中使用,結果是無用的find()
您必須使用.get_attribute('href')
將網址作為字符串獲取。
您必須使用for
-loop 為列表中的每個字符串運行get()
,並且您必須在此循環中運行其他代碼。 在循環之后你必須創建DataFrame
這是循環內沒有代碼的代碼。 但至少它會訪問所有網址。
# --- before loop ---
all_a = driver.find_elements(By.CSS_SELECTOR, "a[class *= 'matches-filter__region']")
# get URLs as strings
all_urls = []
for item in all_a:
all_urls.append(item.get_attribute('href'))
# shorter
#all_urls = [item.get_attribute('href') for item in all_a]
team1List = []
backOddsList = []
team2List = []
layOddsList = []
# --- loop ---
# visit all pages and get teams
for url in all_urls:
print(url)
driver.get(url)
# here (inside loop) all code to get teams from active page
# --- after loop ---
df = pd.DataFrame({
'Team1': team1List,
'Back Odds': backOddsList,
'Team2': team2List,
'Lay Odds': layOddsList
})
df.to_excel('bookmaker.xlsx', engine='openpyxl', sheet_name='Sheet_name_1', index=False)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.