【发布时间】:2022-01-23 09:49:36
【问题描述】:
我正在尝试从我们的国家药品机构获取药品名称、制造商和 auth.code (AIC)。
下面的代码几乎可以工作,但只捕获网页上显示的文本,而不是我在 HTML 中看到但会显示在后续页面上的文本:
因此,在以下示例搜索中,我将药物打印到 ABACUS 药物名称,然后打印空行。我究竟做错了什么?提前谢谢你。
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.keys import Keys
driver = webdriver.Chrome(
"/Users/bob/Documents/work/AIFA/scraper/scrape_gu/chromedriver"
)
# start from AIFA's search page and automate steps to drug search function
driver.get("https://farmaci.agenziafarmaco.gov.it/bancadatifarmaci/cerca-farmaco")
lettocompreso = driver.find_element_by_id("conf")
lettocompreso.click()
accetta = WebDriverWait(driver, 10).until(
EC.element_to_be_clickable((By.XPATH, "/html/body/div[5]/div[3]/div/button"))
)
accetta.click()
# now click on the search button with drug (fragment) name
cerca_textbox = driver.find_element_by_id("search")
cerca_textbox.send_keys("AB")
cerca_textbox.send_keys(Keys.ENTER)
# now parse the results
toplistafarmaci = WebDriverWait(driver, 10).until(
EC.presence_of_element_located((By.XPATH, '//*[@id="ul_farm_results"]/li'))
)
# now all data I need are in <span> triples
drugs = []
for drug in driver.find_elements_by_tag_name("span"):
print(drug.text)
当然,您可以完全忽略代码,直到“现在解析结果”注释行才可以跳转到实际搜索。
【问题讨论】:
-
因为其他元素都有
display: none;属性,如果你想把它们全部刮掉,你就必须使用分页。 -
使用分页请看下文。
-
非常感谢。感谢像你这样的好人学习:)
标签: python selenium selenium-chromedriver