这是交易:我有一个网站,我想提取一些Href,特别是那些有文本“LEIAESTEDEDIÇÃO”的网站,就像在这个HTML中一样。
<a href="http://acervo.estadao.com.br/pagina/#!/20120824-43410-spo-1-pri-a1-not/busca/ministro+Minist%C3%A9rio" title="LEIA ESTA EDIÇÃO" style="" class="" xpath="1">LEIA ESTA EDIÇÃO</a>
这是我的代码,这是非常错误的,我正在做一些测试,看它是否有效。 顺便说一句:它必须是硒。
driver = webdriver.Chrome()
x = 1
while True:
try:
link = ("http://acervo.estadao.com.br/procura/#!/ministro%3B minist%C3%A9rio|||/Acervo/capa//{}/2000|2010|2010///Primeira").format(x)
driver.get(link)
time.sleep(1)
xpath = "//a[contains(text(),'LEIA ESTA EDIÇÃO')]"
links = driver.find_elements_by_xpath(xpath)
bw=('')
for link in links:
bw += link._element.get_attribute("href")
print (bw)
x = x + 1
time.sleep(1)
except NoSuchElementException:
pass
print(x)
time.sleep(1)
答案 0 :(得分:3)
您可以尝试以下代码来获取所需的输出:
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
driver.get(link)
links = WebDriverWait(driver, 10).until(EC.presence_of_all_elements_located((By.LINK_TEXT, "LEIA ESTA EDIÇÃO")))
references = [link.get_attribute("href") for link in links]
答案 1 :(得分:1)
我真的建议你阅读selenium docs,那里的解释简单明了。
有些地方可以改进您的代码:
您应该获得一个链接列表并从中提取文本hrefs。 一个简单的1衬里可以(如果至少有1个带有该文本的标签):
[a_tag.get_attribute('href') for a_tag in driver.find_elements_by_link_text("LEIA ESTA EDIÇÃO")]
bw
:它将成为所有href中的1个连接字符串,我很确定它不是您要查找的内容,而是列表或其他数据结构。
我建议在python中阅读有关字符串连接的this answer。