2016-08-06 10 views
2

Instagramプロファイルページには、より多くの投稿をロードするボタン「LOAD MORE」があります。
画像の説明
Instagramプロファイルページからデータを取得するにはアンドロイドのJsoupによって

私はアンドロイドでjsoupすることによって、このボタンのattrに "HREF" を取得したいです。私はHTMLコードを見つけることができませんが、ブラウザの検査要素のコードを見ることができますビューのソースコードをチェックします。

答えて

0

Jsoupは、サーバーから取得したソースコード(右クリック>ビューソース)のみを解析できます。しかし、あなたのボタンはjavascriptを使ってdomに追加されます(右クリック> inspect)。

URLを取得するには、ページを最初にレンダリングしてから、htmlをjsoupに渡す必要があります。ソースコード

<html> 
<head> 
    <script src="loadData.js"></script> 
</head> 
<body onLoad="loadData()"> 
    <div class="container"> 
     <table id="data" border="1"> 
      <tr> 
       <th>col1</th> 
       <th>col2</th> 
      </tr> 
     </table> 
    </div> 
</body> 
</html> 

loadData.js

// append rows and cols to table.data in page.html 
    function loadData() { 
     data = document.getElementById("data"); 
     for (var row = 0; row < 2; row++) { 
      var tr = document.createElement("tr"); 
      for (var col = 0; col < 2; col++) { 
       td = document.createElement("td"); 
       td.appendChild(document.createTextNode(row + "." + col)); 
       tr.appendChild(td); 
      } 
      data.appendChild(tr); 
     } 
    } 

ページ -

page.html:ここ

HtmlUnitでそれを行う方法の一例です。ブラウザにロードされたときのhtml

| Col1 | Col2 | | ------ | ------ | | 0.0 | 0.1 | | 1.0 | 1.1 |

コルデータ

// load source from file 
    Document doc = Jsoup.parse(new File("page.html"), "UTF-8"); 

    // iterate over row and col 
    for (Element row : doc.select("table#data > tbody > tr")) 

     for (Element col : row.select("td")) 

      // print results 
      System.out.println(col.ownText()); 

出力

(空の)何が起こっ

ためpage.htmlを解析するjsoupを使用していますか?

Jsoupは、サーバーから(この場合はファイルからロードされた)ソースコードを解析します。 JavaScriptやCSSのDOM操作などのクライアント側のアクションは呼び出されません。この例では、行と列は決してデータテーブルに追加されません。

ブラウザでレンダリングしたページを解析するにはどうすればよいですか?

// load page using HTML Unit and fire scripts 
    WebClient webClient = new WebClient(); 
    HtmlPage myPage = webClient.getPage(new File("page.html").toURI().toURL()); 

    // convert page to generated HTML and convert to document 
    doc = Jsoup.parse(myPage.asXml()); 

    // iterate row and col 
    for (Element row : doc.select("table#data > tbody > tr")) 

     for (Element col : row.select("td")) 

      // print results 
      System.out.println(col.ownText()); 

    // clean up resources   
    webClient.close(); 

出力

0.0 
0.1 
1.0 
1.1 
+0

しかし、HtmlUnitは、Androidおよびセレンwebdriverを上では動作しません、私は活動中のWebViewを作成する必要があるために良いではありません。 – CMaster

関連する問題