python - 无法通过 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
非常感谢!
解决方案
像下面这样的东西会起作用。从元素中获取 a[2] 的 web 元素,它是 href。
data['URL'] = listing.find_element_by_xpath('//a[2]').get_attribute('href')
推荐阅读
- tensorflow - 如何使用 tf.estimator 保存张量流模型
- python-3.x - 从 Kubernetes pod 修改文件
- excel - VBA代码突出显示不包含特定文本的单元格
- tsql - 将 SQL Server 表中的行转换为列
- node.js - 在 Jest 中测试失败时如何打印请求和响应?
- asp.net - 如何在窗口警报后禁用浏览器后退按钮
- ionic-framework - 如何限制用户在 Ionic 4 日期选择器中仅选择当前日期后 10 天
- php - PHP 在过程编程中避免全局变量
- javascript - 反应,从另一个函数访问在 componentDidMount 中定义的变量
- node.js - 如何以驼峰式方式返回 sequelize 查询的结果集?