2016-03-23 77 views
2

我需要通過編程方式連接到我的LinkedIn帳戶並獲取我的個人檔案網頁來獲取我關注的組和公司。我嘗試使用selenium登錄LinkedIn並獲取我的個人檔案網頁的呈現html。使用Selenium和Java獲取瀏覽器呈現的HTML

但在相應的<div>標籤(<div id="groups-container">)中包含我所關注的組列表,我只能看到用於獲取組相關信息的JavaScript。是否有可能獲得由包含組列表的螢火蟲提供的完全呈現的HTML。

+0

你可以得到頁面的「源代碼」,是你在找什麼? – Paras

+0

我其實想要呈現的html內容。例如,如果數據由腳本加載到特定的div中,我希望在div內加載數據而不是腳本內容。 – user2475467

+0

當然這是可能的,你只需要一個體面的JS支持的瀏覽器(所以htmlunit在這個問題上是沒有問題的)。另一方面,linkedin有一個可以用於這種東西的api。也許你想檢查一下,如果它已經有你想要的。 https://developer.linkedin.com/docs您可能還想檢查瀏覽器中的請求 - 直接請求總是比處理硒中的時間問題更可靠。 – skandigraun

回答

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()); 
} 
相關問題