Instagramプロファイルページには、より多くの投稿をロードするボタン「LOAD MORE」があります。
画像の説明
Instagramプロファイルページからデータを取得するにはアンドロイドのJsoupによって
私はアンドロイドでjsoupすることによって、このボタンのattrに "HREF" を取得したいです。私はHTMLコードを見つけることができませんが、ブラウザの検査要素のコードを見ることができますビューのソースコードをチェックします。
Instagramプロファイルページには、より多くの投稿をロードするボタン「LOAD MORE」があります。
画像の説明
Instagramプロファイルページからデータを取得するにはアンドロイドのJsoupによって
私はアンドロイドでjsoupすることによって、このボタンのattrに "HREF" を取得したいです。私はHTMLコードを見つけることができませんが、ブラウザの検査要素のコードを見ることができますビューのソースコードをチェックします。
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
しかし、HtmlUnitは、Androidおよびセレンwebdriverを上では動作しません、私は活動中のWebViewを作成する必要があるために良いではありません。 – CMaster