簡體   English   中英

如何從頁面提取的href列表中使用driver.get(url)?

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

##############################################################################

#全碼https://pastebin.com/W0VqaKVD

更新了代碼,我檢查了,它正在工作,導航到同一瀏覽器 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 后,我可以連接,但我發現代碼沒有什么問題

  1. 你必須在for -loop 之前得到aa

  2. find引用瀏覽器的 memory 中的對象,但是當您使用get()時,它會從 memory 中刪除這些對象,以創建新的 object 從新頁面中使用,結果是無用的find() 您必須使用.get_attribute('href')將網址作為字符串獲取。

  3. 您必須使用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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM