我正在尝试在Twitter上获得关注者的数量。我成功地吸引了如下关注者:

String followers = driver.findElement(By.xpath("//div[@class='ProfileCanopy-navBar']//li[@class='ProfileNav-item ProfileNav-item--followers']//span[@class='ProfileNav-value']")).getText();


问题是答案不是确切的数字“ 4.41M”。

HTML:

<a class="ProfileNav-stat ProfileNav-stat--link u-borderUserColor u-textCenter js-tooltip js-nav" data-nav="followers" tabindex="0" data-original-title="4,406,048 Followers">
    <span class="ProfileNav-label">Followers</span>
    <span class="ProfileNav-value" data-is-compact="true">4.41M</span>
</a>


我正在尝试获取数字“ 4,406,048”(在属性a的末尾)。我在网上看了大约一个小时,却找不到合适的解决方案。我正在将Selenium与Java和Chrome结合使用。

最佳答案

这是一个奇怪的。我写了应该删除该数字的代码,但它也一直返回null。我终于弄清楚了当我拉出元素然后写出externalHTML时发生了什么。在页面加载期间更改了元素。

WebDriver driver = new FirefoxDriver();
driver.get("https://twitter.com/blakeshelton");
WebDriverWait wait = new WebDriverWait(driver, 5);
WebElement e = wait.until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("a[data-nav='followers']")));
System.out.println(e.getAttribute("outerHTML"));
System.out.println(e.getAttribute("title"));


如果运行此代码,您将获得

<a class="ProfileNav-stat ProfileNav-stat--link u-borderUserColor u-textCenter js-tooltip js-openSignupDialog js-nonNavigable u-textUserColor" title="14,189,678 Followers" data-nav="followers" href="/blakeshelton/followers">
    <span class="ProfileNav-label">Followers</span>
    <span class="ProfileNav-value" data-is-compact="true">14.2M</span>
</a>
14,189,678 Followers


您将在externalHTML的A标记中注意到,title包含跟随者的数量。这就是为什么我使用它而不是data-original-title的原因。无论如何,此代码已经过测试,可以正常工作。

关于java - 使用 Selenium 获取Twitter上的关注者数量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33570353/

10-15 03:45