在打开这个问题之前,我试图解决这个问题一段时间,并尝试在这里发布多个解决方案。
我目前正在尝试使用以下代码运行 scraper
website = 'https://www.abitareco.it/nuove-costruzioni-milano.html'
path = Path().joinpath('util', 'chromedriver')
driver = webdriver.Chrome(path)
driver.get(website)
main = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.NAME, "p1")))
我的目标超链接中有 scheda
字样:
i = driver.find_element_by_xpath('.//a[contains(@href, "scheda")]')
i.text
我的第一个问题是 find_element_by_xpath
只输出一个超链接,第二个问题是它目前没有提取任何内容。
希望得到任何帮助和/或指导。
答案 0 :(得分:1)
您需要改用 find_elements
:
for name in driver.find_elements(By.XPATH, ".//a[contains(@href, 'scheda')]"):
print(name.text)
请注意,find_elements
将返回一个网络元素列表,而 find_element
将返回一个 single web element
。
如果您专门寻找 href
attribute
那么您可以尝试以下代码:
for name in driver.find_elements(By.XPATH, ".//a[contains(@href, 'scheda')]"):
print(name.get_attribute('href'))
答案 1 :(得分:1)
有两个问题,查看网站。
假设您想要抓取所有这些链接的 URL,您可以使用 .get_attribute('href') 而不是 .text,如下所示:
url_list = driver.find_elements(By.XPATH, './/a[contains(@href, "scheda")]')
for i in url_list:
print(i.get_attribute('href'))
它将检测所有符合您标准的网络元素并将它们存储在列表中。我只是以打印为例,但显然您可能想做的不仅仅是打印链接。