我在循环中提取文本时遇到问题。在第一个循环中提取了文本,但在第二个循环中,感兴趣的字段返回为空。
问题出在答案字段上,而每次都会提取问题字段。
driver = web_driver()
driver.get('https://www.medicitalia.it/consulti/?tag=cefalea')
data = []
# 2. Loop per navigare tra le pagine
for i in range(20):
for urls in url:
url = urls.get_attribute("href")
print("URL QA: {}".format(url))
print()
curr_driver = web_driver()
curr_driver.get(url)
# 4. Apertura URL domande e estrazione dati:
WebDriverWait(curr_driver, 20).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="question"]'))
)
#5. Extracting and Storing Data:
try:
question = curr_driver.find_element(By.XPATH, "//h1[contains(@class, 'consulto-h1') and contains(@class, 'px-2')]").text
except:
question = None
try:
answer = curr_driver.find_element(By.XPATH, "//div[contains(@class, 'col cons px-4 pt-4 pb-0')]").text
except:
answer = None
# 6. Closing WebDriver Instances:
curr_driver.quit()
# 6. Closing WebDriver Instances:
driver.quit()
<div class="col cons px-4 pt-4 pb-0">
"Cosa posso fare?"<br>
<br>
Una visita gnatologica!<br>
<br>
E' assolutamente verosimile che i sintomi che lei accusa derivano dalla posizione e dal movimento della mandibola.<br>
I condili della mandibola si attaccano al cranio proprio vicino all'orecchio, ed ecco perchè vi è confusione dei sintomi attribuendoli falsamente all'apparato uditivo.<br>
<br>
La tensione muscolare spiega invece mal di testa e cervicale, contribuendo inoltre ad aumentare gli acufeni.<p class="my-2 text-right small"><i><a href="https://www.medicitalia.it/specialita/gnatologia-clinica/?qurl=http%3A%2F%2Fwww.studioformentelli.it">www.studioformentelli.it</a> <br>
Attività prevalente: Gnatologia e<br>
Implantologia (scuola italiana)</i></p>
</div>
我想了解为什么从第二个 for 循环开始答案仍然是空的。
您遇到的问题是因为您在循环内使用了无法处理接受 cookie 弹出窗口的新 webdriver。
而不是接受 20 次 cookie,而是使用相同的 Web 驱动程序来抓取链接。
尝试以下操作。在这里,我刚刚将链接从元素列表中复制到单独的列表中。然后,我使用已经处理过 cookie 弹出窗口的相同 Web 驱动程序抓取了这些链接。