【问题标题】:Selenium python to locate an element and print its attributeSelenium python 定位元素并打印其属性
【发布时间】:2016-11-25 15:59:23
【问题描述】:

我正在尝试抓取这个特定的网站 - Link to the Page。我想为每个属性抓取数据列表 ID。请查看图像以查看我要查找的元素。我无法发布我的 HTML,因为它要复杂得多。

这是我尝试过的示例代码 -

driver.get("https://app.thestorefront.com/listings?address=New%20York,%20NY,%20USA&page=1")
Container=driver.find_elements_by_class_name("listing-panel")
for index in Container:
    a= index.find_element_by_class_name("favourite-tag.ng-isolate-scope")
    print(a)
    for index2 in a:
        b= index2.get_attribute("data-listing-id")

结果无法定位元素a。请给我你的建议。非常感谢。

【问题讨论】:

  • 关于您的代码的几点说明: 1. 您正在尝试迭代 aa 是一个网络元素,但不是一个可迭代对象。 2. b 将在每次迭代中被覆盖。是否要创建一个列表并附加所有 b 值?
  • 耶!谢谢@Andersson。我明白你的意思了!

标签: python selenium


【解决方案1】:

执行此操作的快速方法是查找具有您要查找的属性的所有元素。据我所知,只有您想要的元素具有该属性。

driver.get("https://app.thestorefront.com/listings?address=New%20York,%20NY,%20USA&page=1")
for e in driver.find_elements_by_css_selector("[data-listing-id]")
    print(e.get_attribute("data-listing-id"))

【讨论】:

  • 哇!!这太完美了!谢谢
【解决方案2】:

要以安德森所说的为基础,您需要找到所有元素,而不仅仅是一个。你也在混淆你的选择器。我建议只使用 css_selector:

driver.get("https://app.thestorefront.com/listings?address=New%20York,%20NY,%20USA&page=1")
Container=driver.find_elements_by_class_name("listing-panel")
for index in Container:
    a= index.find_elements_by_css_selector(".favourite-tag.ng-isolate-scope")
    print(a)
    for index2 in a:
        b= index2.get_attribute("data-listing-id")

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2015-11-08
    • 1970-01-01
    • 2021-02-12
    • 2019-01-05
    • 1970-01-01
    • 2021-09-18
    相关资源
    最近更新 更多