使用Selenium和Java获取浏览器呈现的HTML

时间:2016-03-23 08:34:40

标签: java selenium web-scraping linkedin

我需要通过以编程方式连接到我的LinkedIn帐户并抓取我的个人资料网页来获取我关注的群组和公司。我尝试使用selenium登录LinkedIn并获取我的个人资料网页的渲染html。

但在包含我所关注的群组列表的相应<div>标记(<div id="groups-container">)中,我只看到用于获取群组相关信息的JavaScript。是否有可能获得由包含组列表的firebug提供的完全呈现的html。

1 个答案:

答案 0 :(得分:0)

以下Selenium代码帮助我获取了我所属的群组列表。如果你不想在屏幕上看到自动化(无头),你可以考虑使用HTMLUnitDriver

WebDriver driver = new FirefoxDriver();
driver.get("https://www.linkedin.com");

// login
driver.findElement(By.id("login-email")).sendKeys("");
driver.findElement(By.id("login-password")).sendKeys("");
driver.findElement(By.name("submit")).click();
Thread.sleep(3000);

// navigate to Groups
Actions actions = new Actions(driver);
actions.moveToElement(driver.findElement(By.id("nav-link-interests"))).build().perform();
Thread.sleep(2000);
actions.moveToElement(driver.findElement(By.xpath("//ul[@id='interests-sub-nav']//a[contains(.,'Groups')]")))
            .click().build().perform();
Thread.sleep(10000);

// navigate to mygroups
driver.findElement(By.linkText("My Groups")).click();
Thread.sleep(10000);

// Get all groups I am part of
for (WebElement groupNameElement : driver.findElements(By.xpath(
            "//h3[contains(.,'GROUPS THAT I')][contains(.,'M IN')]/following-sibling::ul//a[@class='js-entity-name entity-name']"))) {
    System.out.println(groupNameElement.getText());
}