【问题标题】:Targeting Xpath attributes in Selenium在 Selenium 中定位 Xpath 属性
【发布时间】:2021-10-08 10:14:00
【问题描述】:

我正在使用 Selenium 抓取网页,但在定位某些属性时遇到了一些问题。

我要抓取的页面如下所示:

<div>
    <span abc> content </span>
    <span def> content2 </span>
<div>

我的目标是检索“span abc”标签中的文本,而不选择“span def”标签中包含的其他文本。

我尝试了多种方法并查看了许多不同的资源,但我无法找到正确的方法,因为我不想同时选择所有跨度并且我不想根据标签内的文本进行搜索。

【问题讨论】:

    标签: python html xml selenium web-scraping


    【解决方案1】:

    一种简单的方法是建立索引,因为您不想选择基于

    因为我不想同时选择所有跨度,我 不想根据标签内的文字进行搜索。

    如果 abc 是一个属性,请使用:

    //div/span[@abc]
    

    带索引:

    (//div/span[@abc])[1]
    

    【讨论】:

    • 谢谢,你的第一行正是我想要的。
    【解决方案2】:

    如果您只想从这两个跨度中提取第一个跨度,则可以使用 XPATH 轻松完成此操作。它看起来像这样:

    span = driver.find_element_by_xpath("/html/body/div/span[1]").text
    

    如果您想拉出每个跨度,但使用其中的每一个执行命令,您可以这样做:

    span = len(driver.find_elements_by_xpath("/html/body/div/span"))
    m = 1
    
    while m <= 0:
        span = driver.find_element_by_xpath("/html/body/div/span["+str(m)+"]")
        print(span.text)
    
        m = m + 1
    

    【讨论】:

      【解决方案3】:

      您可以使用像//span[1]/text() 这样的xpath 来获取&lt;span&gt; 标签内的文本

      span = driver.find_element_by_xpath("/html/body/div/span[1]/text()")
      

      【讨论】:

        猜你喜欢
        • 2016-01-04
        • 2015-10-20
        • 2015-09-14
        • 1970-01-01
        • 2011-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-13
        相关资源
        最近更新 更多