【问题标题】:How to retrieve variable (like count) with Selenium from XPATH如何从 XPATH 中使用 Selenium 检索变量(如计数)
【发布时间】:2021-06-26 20:53:15
【问题描述】:

我正在尝试使用 selenium/python 抓取 Instagram 帖子的点赞数。 如何使用 xpath 定位点赞数并将其保存到变量中?

这是显示喜欢计数的部分:

<section class="EDfFK ygqzn">
    <div class="                     Igw0E     IwRSH      eGOV_     ybXk5   vwCYk                                                                                                               ">
        <div class="                     Igw0E _56XdI          eGOV_         _4EzTm                                       ItkAi                                                                       ">
            <a class="zV_Nj" href="/p/asd123asd123asd123ads123asd123asd123/liked_by/" tabindex="0">
                <div class="                     Igw0E   rBNOH         hLiUi    ybXk5    _4EzTm                                                                                                              ">
                    <div style="height: 20px; width: 20px; order: 0;" class="KcRNL mOBkM    ">
                        <span class="_2dbep " role="link" style="width: 20px; height: 20px;" tabindex="-1">
                            <img alt="testguys Profilbild" class="_6q-tv" crossorigin="anonymous" data-testid="user-avatar" draggable="false" src="https://scontent-vie1-1.cdninstagram.com/v/t99.9999-99/s150x150/9999999_9999999_9999999_n.jpg?tp=1&amp;_nc_ht=scontent-vie1-1.cdninstagram.com&amp;_nc_ohc=123asd123asd123asd123asd&amp;ccb=7-4&amp;oh=123asd123asd123asd123asd&amp;oe=608D16CE&amp;_nc_sid=asd123"</span>
                    </div>
                </div>
            </a>
        </div>
        <div class="Nm9Fw">Gefällt
            <span class="Jv7Aj mArmR MqpiF  ">
                <a class="FPmhX notranslate  cqXBL" title="testguy" href="/testguy/" tabindex="0">testguy</a>
            </span>
            und
            <a class="zV_Nj" href="/p/qwertzuiopasdfghjklyxcvbn/liked_by/" tabindex="0">
                <span>63</span>
                weitere Personen
            </a>
        </div>
    </div>
</section>

在这种情况下,点赞数应为“63”。 我试图在开发工具中从 Firefox 中复制 Xpath 并利用它:

post_like_count = driver.find_element_by_xpath(f"/html/body/div[5]/div[2]/div/article/div[3]/section[2]/div/div[2]/a/span")

但由于“.NoSuchElementException”,这不起作用。 我必须在上面的 xpath 中添加一个变量吗?

非常感谢您!

【问题讨论】:

  • 我认为//a[@class='zV_Nj'/span 会这样做。
  • post_like_count = driver.find_element_by_xpath("//a[@class='zV_Nj'/span") 不是根据 selenium 的合法表达。
  • 试试post_like_count = driver.find_element_by_xpath("//a[@class='zV_Nj']/span") -- 我添加了缺少的右括号。
  • 您是否正在尝试获取特定用户的帖子的“喜欢”计数?具体的帖子?
  • 错误:无法定位元素://a[@class='zV_Nj']/span

标签: python html selenium xpath


【解决方案1】:

你可以试试contains

driver.find_element_by_xpath('//a[contains(@href, "%s")]' % "liked_by")

【讨论】:

  • 导致错误:selenium.common.exceptions.NoSuchElementException:消息:无法找到元素:like_by
  • 错误:无法定位元素://a[contains(@href, "liked_by")]
  • @sgtwagner123 您的代码中是否处理了同步?您必须等到元素加载完毕。
【解决方案2】:

首先,你不应该像这样以专业的方式使用 xpath:

post_like_count = driver.find_element_by_xpath(f"/html/body/div[5]/div[2]/div/article/div[3]/section[2]/div/div[2]/a/span")

因为这个符号是静态的。当网页发生任何更改时,此地址可能无效,您的所有代码都可能已损坏。

因此,我建议您在这种情况下以及与您的其他用例一起使用。

据我了解,您想要获得“63”。从这个角度来看,无法确定某些事情,但这可能对您有用:

driver.find_element_by_xpath("//div[@class='Nm9Fw']/a[@class='Nm9Fw']/span/text()")

【讨论】:

    猜你喜欢
    • 2020-11-13
    • 1970-01-01
    • 2021-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    相关资源
    最近更新 更多