首页 > 解决方案 > 无法通过 Selenium 从元素中获取属性('href')

问题描述

我已经被困了很久了......你能帮忙吗?

试图构建一个抓取该网站上的列表的刮板,但我一生都无法获得每个列表的 URL。你能帮忙吗?

我尝试了多种方法来定位元素,最新的方法是绝对 XPath(按类也总是失败)

编码:

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import pandas as pd
import time

PATH = "/Users/csongordoma/Documents/chromedriver"
driver = webdriver.Chrome(PATH)
driver.get('https://ingatlan.com/lista/elado+lakas+budapest')

data = {}
df = pd.DataFrame(columns=['Price', 'Address', 'Size', 'Rooms', 'URL'])

listings = driver.find_elements_by_css_selector('div.listing__card')
for listing in listings:
    data['Price'] = listing.find_elements_by_css_selector('div.price')[0].text
    data['Address'] = listing.find_elements_by_css_selector('div.listing__address')[0].text
#    data['Size'] = listing.find_elements_by_css_selector('div.listing__parameter listing__data--area-size')[0].text
    data['URL'] = listing.find_elements_by_xpath('/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/main[1]/div[1]/div[1]/div[1]/a[3]')[0].text
    df = df.append(data, ignore_index=True)

print(len(listings))
print(data)

#   driver.find_element_by_xpath("//a[. = 'Következő oldal']").click()

driver.quit()

错误信息:

Traceback (most recent call last):
  File "hello.py", line 18, in <module>
    data['URL'] = listing.find_elements_by_xpath('/html[1]/body[1]/div[1]/div[2]/div[4]/div[1]/main[1]/div[1]/div[1]/div[1]/a[3]')[0].text
IndexError: list index out of range

非常感谢!

标签: pythonpandasselenium

解决方案


像下面这样的东西会起作用。从元素中获取 a[2] 的 web 元素,它是 href。

data['URL'] = listing.find_element_by_xpath('//a[2]').get_attribute('href')

推荐阅读