3

こんにちは。ここにアナウンスをホストするサイトがあります。アナウンス のページで電話番号を取得する必要があります。たとえば、ここ に電話番号が画像で表示されます。写真へのリンクを取得してこの写真を保存し、この写真を認識したかったのです。しかし、プログラムで画像へのリンクを取得し始めたとき、この画像がJavaスクリプトを生成しているのを見ました。プログラム内の画像へのリンクを取得しようとしているコードは次のとおりです。

.....
HtmlNode bodyNode7 = doc.DocumentNode.SelectSingleNode(@".//*//table[6][@class='objectView']//tr[2]//td");
Console.WriteLine(bodyNode7.InnerText.ToString());
.....

画像リンクの解析にはHtmlAgilityPackライブラリ(C#)を使用しています。このページ(ここ)のソースコードを開いて、画像を生成するJavascriptを見ました:

<tr id="ctl00_cphBody_FlatSell_Obj_adapterObject_trPhones" style="background-color: white">
        <th>Телефоны:</th>
        <td>
                    <script language="javascript" type="text/javascript">document.write(decs("0x88e36b6d468b03acca9737a99ba0fffe05cb3a53de8858b798194826c94719e2193434b3377d69745a1a28879291ecfd69c703de931ac8f551fe22229ef49160"));</script>
        </td>
</tr>

javascriptでは、関数decs()を使用して画像を生成します。コードは次のとおりです。

function decs(a){
return deco(key,hexToString(a),0,1,iv)
};

私が正しく理解していれば、この関数は電話番号を含む画像へのリンクを作成したか、この関数がこの画像を作成しました。この場合、関数はパラメータ「key」を使用します。このパラメータの作成方法はわかりません。

質問:プログラムでこの写真へのリンクを電話番号で取得したり、この写真を電話番号でダウンロードしたりするにはどうすればよいですか?

4

1 に答える 1

1

いくつかのオプションがあります。1つは、.NETアプリケーション内でWebkitのインスタンスをホストするOpenWebkitSharpのようなライブラリを使用することです。これを使用して、ページ上の任意のスクリプトを実行し、結果のDOMを調べて画像を抽出できます。ライブラリはここにあります:http ://code.google.com/p/open-webkit-sharp/

ただし、アプリケーション内でWebkitをホストすると、読み込みに時間がかかり、大量のメモリを消費することになります。頻繁にパッチを適用しておく必要があります。Webkitの更新はほぼ毎週発行されます。

別のオプションは、ページのHTMLとJavascriptが一定であると仮定して、正規表現を使用して特徴を抽出し、自分で変換を行うことです。

decs(" "テキストを検索し、後で16進エンコードされたテキストを抽出する正規表現がありdecs、それを関数の独自の実装にフィードします。これは簡単に実行できるはずです。

HTH。

于 2013-01-20T08:56:33.440 に答える