Selenium (python):遍历跨度列表并仅获取具有特定负载的 href
Selenium (python): iterate through span list and get href of only with specific payload
意大利在官方“Gazzetta Ufficiale”网站上公布其法律。
这是一个 sample page,您可以在其中看到在 id=elenco_hp 的 div 中有一长串 span。
我试图了解如何遍历跨度,当我找到类似 <span class="emettitore">AGENZIA ITALIANA DEL FARMACO</span>
的跨度时,然后获取以下 <span class="risultato">
跨度(一个或多个)中包含的所有后续 href 字符串直到我读到“rubrica”或“emettitore”跨度。
我尝试了以下代码,但它不起作用:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver.get("https://www.gazzettaufficiale.it/gazzetta/serie_generale/caricaDettaglio?dataPubblicazioneGazzetta=2021-05-19&numeroGazzetta=118")
elems = driver.find_elements_by_class_name("risultato")
links = [elem.get_attribute("href") for elem in elems]
for link in links:
print(link)
但只打印了大约 20 张 None。
要打印 href 属性的值,您必须引入 for the visibility_of_all_elements_located() and you can use either of the following :
使用CSS_SELECTOR:
driver.get("https://www.gazzettaufficiale.it/gazzetta/serie_generale/caricaDettaglio?dataPubblicazioneGazzetta=2021-05-19&numeroGazzetta=118")
print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "span.emettitore +span.risultato > a")))])
使用 XPATH:
driver.get("https://www.gazzettaufficiale.it/gazzetta/serie_generale/caricaDettaglio?dataPubblicazioneGazzetta=2021-05-19&numeroGazzetta=118")
print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//span[@class='emettitore']//following::span[@class='risultato']/a")))])
控制台输出:
['https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21G00076&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21G00076&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02967&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02967&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02966&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02966&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02743&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02743&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03151&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03151&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02741&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02741&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03056&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03056&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02882&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02882&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02744&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02744&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02640&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02640&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02928&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02928&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02948&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02948&elenco30giorni=false']
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
意大利在官方“Gazzetta Ufficiale”网站上公布其法律。
这是一个 sample page,您可以在其中看到在 id=elenco_hp 的 div 中有一长串 span。
我试图了解如何遍历跨度,当我找到类似 <span class="emettitore">AGENZIA ITALIANA DEL FARMACO</span>
的跨度时,然后获取以下 <span class="risultato">
跨度(一个或多个)中包含的所有后续 href 字符串直到我读到“rubrica”或“emettitore”跨度。
我尝试了以下代码,但它不起作用:
from selenium import webdriver
from selenium.webdriver.support.ui import Select
driver.get("https://www.gazzettaufficiale.it/gazzetta/serie_generale/caricaDettaglio?dataPubblicazioneGazzetta=2021-05-19&numeroGazzetta=118")
elems = driver.find_elements_by_class_name("risultato")
links = [elem.get_attribute("href") for elem in elems]
for link in links:
print(link)
但只打印了大约 20 张 None。
要打印 href 属性的值,您必须引入
使用CSS_SELECTOR:
driver.get("https://www.gazzettaufficiale.it/gazzetta/serie_generale/caricaDettaglio?dataPubblicazioneGazzetta=2021-05-19&numeroGazzetta=118") print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.CSS_SELECTOR, "span.emettitore +span.risultato > a")))])
使用 XPATH:
driver.get("https://www.gazzettaufficiale.it/gazzetta/serie_generale/caricaDettaglio?dataPubblicazioneGazzetta=2021-05-19&numeroGazzetta=118") print([my_elem.get_attribute("href") for my_elem in WebDriverWait(driver, 20).until(EC.visibility_of_all_elements_located((By.XPATH, "//span[@class='emettitore']//following::span[@class='risultato']/a")))])
控制台输出:
['https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21G00076&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21G00076&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02967&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02967&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02966&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02966&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02743&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02743&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03151&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03151&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02741&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02741&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03056&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A03056&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02882&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02882&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02744&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02744&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02640&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02640&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02928&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02928&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02948&elenco30giorni=false', 'https://www.gazzettaufficiale.it/atto/serie_generale/caricaDettaglioAtto/originario?atto.dataPubblicazioneGazzetta=2021-05-19&atto.codiceRedazionale=21A02948&elenco30giorni=false']
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.common.by import By from selenium.webdriver.support import expected_conditions as EC