[英]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.