ウェブページの動的データ取得に関する知識学習(2)
4755 ワード
jsにロードされたダイナミックコンテンツを取得する3つの方法
一部のウェブサイトの比較的重要な内容はJavascriptを採用して動的に内容をロードするかもしれません.採集を防止し、その中の情報を取得します.
以下では、javascriptのコンテンツを取得できる3つの方法を紹介します.3つの方法の原理は同じです.ブラウザエンジンでjavascriptを解析します.
1)、WebBrowserコントロールを利用する
この方式はみんなも知っています.多く話しません.大切なところをいくつか話します.まず、コントロールのために、DcumentComplettedイベントでコンテンツ取得の仕事を完成したいです.
は、ドキュメントの読み込みが完了した後にトリガされます.次に、このイベントは問題があります.つまり、ページの中にiframeのフレームワークがあれば、このiframeのロードが完了すれば、このイベントが発生します.
1
1
2)phantomjsというオープンソースを利用するプロジェクト
このプロジェクトの住所:http://phantomjs.org/.このプロジェクトの話の通俗的な点は、インタフェースなしのwebkitカーネルベースのブラウザです.ブラウザである以上、もちろん取得できます.
javascriptがロードした内容.このオープンソースプロジェクトの詳細については、みんな自分でこの文書を読みに来てください.
まず簡単に紹介します.このプロジェクトはwin 7でどう使いますか?
1、windowsバージョン、住所をダウンロードします.http://phantomjs.org/download.html現在のバージョンは1.9.1です.
2、ダウンロードし終わったら、解凍して、あるフォルダの下に置く.
3、環境変数を設定して、このフォルダのルートディレクトリを環境変数に配置します.
ここではProcess類を使って、コードを確認します.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
ttestjsのコード
1
2
3
4
5
6
7
8
9
10
11
12
13
3)phantomjsのパッケージクラスを利用する
このクラスはとても全面的で、各種のブラウズに基づく駆動があって、もちろんphantomjsも含んで、私達はPhotomJSDriver種類を使って操作します.もちろんこのクラスは情報が多いです.皆さんが必要です.
自分から見ても、私も少し見ました.詳しくは見ていませんでした.もちろん、まずクラスライブラリをダウンロードします.住所:http://docs.seleniumhq.org/download/をクリックします.
(3.5と4.0のバージョンしかないようですが、古いバージョンでは2.0をサポートしていますか?)http://selenium.googlecode.com/git/docs/api/dotnet/index.html下はコールを見てください.簡単です.コードは何行で解決できますか?
1
2
3
4
5
一部のウェブサイトの比較的重要な内容はJavascriptを採用して動的に内容をロードするかもしれません.採集を防止し、その中の情報を取得します.
以下では、javascriptのコンテンツを取得できる3つの方法を紹介します.3つの方法の原理は同じです.ブラウザエンジンでjavascriptを解析します.
1)、WebBrowserコントロールを利用する
この方式はみんなも知っています.多く話しません.大切なところをいくつか話します.まず、コントロールのために、DcumentComplettedイベントでコンテンツ取得の仕事を完成したいです.
は、ドキュメントの読み込みが完了した後にトリガされます.次に、このイベントは問題があります.つまり、ページの中にiframeのフレームワークがあれば、このiframeのロードが完了すれば、このイベントが発生します.
1
if
(wb.ReadyState == WebBrowserReadyState.Complete && e.Url.ToString() == wb.Url.ToString())
この判断は、コントロールのすべての内容をロードし終わって、このページでロードし終わったということで、あるiframeがロードし終わったのではありません.そして通過できます.1
wb.Document.Body.InnerHtml;
コンテンツを取得しに来ました.2)phantomjsというオープンソースを利用するプロジェクト
このプロジェクトの住所:http://phantomjs.org/.このプロジェクトの話の通俗的な点は、インタフェースなしのwebkitカーネルベースのブラウザです.ブラウザである以上、もちろん取得できます.
javascriptがロードした内容.このオープンソースプロジェクトの詳細については、みんな自分でこの文書を読みに来てください.
まず簡単に紹介します.このプロジェクトはwin 7でどう使いますか?
1、windowsバージョン、住所をダウンロードします.http://phantomjs.org/download.html現在のバージョンは1.9.1です.
2、ダウンロードし終わったら、解凍して、あるフォルダの下に置く.
3、環境変数を設定して、このフォルダのルートディレクトリを環境変数に配置します.
ここではProcess類を使って、コードを確認します.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
Process p =
new
Process();
//
p.StartInfo.FileName =
@"cmd.exe"
;
p.StartInfo.UseShellExecute =
false
;
p.StartInfo.RedirectStandardInput =
true
;
p.StartInfo.RedirectStandardOutput =
true
;
p.StartInfo.RedirectStandardError =
true
;
p.StartInfo.CreateNoWindow =
true
;
p.Start();
//
p.StandardInput.WriteLine(
@"cd D:\Program Files\phantomjs\examples"
);
p.StandardInput.WriteLine(
@"d:"
);
p.StandardInput.WriteLine(
"phantomjs --output-encoding=gbk test.js www.xxxx.com"
);
p.StandardInput.Close();
p.StandardInput.Dispose();
//
string
strRst = p.StandardOutput.ReadToEnd();
p.Close();
Console.WriteLine(strRst);
上のコードにtest.jsのファイルが使われていますが、このファイルの書き方はphantomjsのapiまたはそれが持っている例を参考にしてください.簡単で分かりやすいです.ttestjsのコード
1
2
3
4
5
6
7
8
9
10
11
12
13
var
page = require(
'webpage'
).create(),
system = require(
'system'
),
url;
url = system.args[1];
page.open(url,
function
(status) {
var
title = page.evaluate(
function
() {
return
document.getElementById(
'contact'
).innerHTML;
//return document.title;
});
console.log(
'Page title is '
+ title);
// , c#
phantom.exit();
});
3)phantomjsのパッケージクラスを利用する
このクラスはとても全面的で、各種のブラウズに基づく駆動があって、もちろんphantomjsも含んで、私達はPhotomJSDriver種類を使って操作します.もちろんこのクラスは情報が多いです.皆さんが必要です.
自分から見ても、私も少し見ました.詳しくは見ていませんでした.もちろん、まずクラスライブラリをダウンロードします.住所:http://docs.seleniumhq.org/download/をクリックします.
(3.5と4.0のバージョンしかないようですが、古いバージョンでは2.0をサポートしていますか?)http://selenium.googlecode.com/git/docs/api/dotnet/index.html下はコールを見てください.簡単です.コードは何行で解決できますか?
1
2
3
4
5
PhantomJSDriver driver = driver =
new
PhantomJSDriver();
driver.Url =
"url"
;
string
pagesource = driver.PageSource;
driver.Quit();
driver.Dispose();
以上の3つの方法は全部間違えてテストして使えます.