2016-03-23 16 views
2

プログラムで私のLinkedInアカウントに接続してプロフィールWebページをスクラップすることで、私が従うグループと会社を取得する必要があります。私はLinkedInにログインし、私のプロファイルのWebページのレンダリングされた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

次のセレンコードは、私が参加しているグループのリストを取得するのに役立ちました。スクリーン上のオートメーション(ヘッドレス)を見たくない場合は、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()); 
} 
関連する問題