私はFirefoxを使用しており、読み込まれたウェブサイトで英語のテキストを見て読むのに問題はありません。
Firefoxで「保存」をクリックし、関連するWebページをテキストファイルとして保存すると、テキストファイルの内容をすべて読むことができます。すべての文字を読むことができます。
しかし、Downthemallを使用して同じWebページを保存し、.htmlとして保存すると(Dtaを使用する唯一の方法のようです)、保存されたHTMLファイルには読み取れない文字があり、より重要なことに、これらの文字は重要です。私は読んで抽出することに興味があります。 Firefoxでソースを見ると、読み取れない同じ出力が表示されます。
デフォルトでは、Webサイト(yunfile.com)をクリーンアップしてファイル名とダウンロードリンクを収集したいと思います。ファイル名を読み取れないことを除いて、すべてが大丈夫でしょう。
以下はサンプルリンクです。http://page3.dfpan.com/file/syg65488/0141cd27私が経験している問題は、ファイル名の行に「ダウンロード中」と書かれていることです。
HTMLファイルのテキストは次のとおりです。 ¡£¢¢£¥£¢½ãòá碽áòá
Firefoxでは、同じテキストは次のようになります。 20110601.part1.rar
これらのHTMLファイルを変換するために実行できるプログラムとコマンドはありますか?
どんなアドバイスも本当にありがとうございます。
答え1
これはエンコーディングの問題ではありません。何が起こるかは、サーバーにファイル名が破損したHTMLを返し、それをクリーンアップするためのいくつかのJavascriptがあることです。
幸いなことに、修正は非表示になっているか難読化されていないJavaScriptで行われ、簡単に元に戻すことができます。 JSコードは
function codeAndEncode(_key,_str){
var keyUnicodeSum=0;
var codedStr = "";
for( j = 0; j<_key.length; j++ ){
keyUnicodeSum += _key.charCodeAt( j );
}
for( i = 0; i<_str.length; i++ )
{
var _strXOR = _str.charCodeAt(i) ^ keyUnicodeSum;
codedStr += String.fromCharCode( _strXOR );
}
return codedStr;
}
var filename = codeAndEncode("111", "ëúòüýúòý¡£¢¢£¥£¢½ãòá碽áòá");
とても簡単です。値を計算し、それを文字列の各文字とXORします。フォーム変更とフォームキャンセル操作は同じです。クローラで使用するすべての言語に翻訳できます。たとえば、以下はUNDO破損したPerlコードです。
$ perl -CA -l -we 'my $sum = 0; $sum += ord foreach split //, $ARGV[0]; print $ARGV[1] ^ (chr($sum) x length($ARGV[1]))' 111 "ëúòüýúòý¡£¢¢£¥£¢½ãòá碽áòá"
xiaonian20110601.part1.rar
グラインダーの使用DOM復元する必要があるHTMLツリーのノードにアクセスしdocument.getElementById("file_show_filename")
て識別します。document.getElementById("file_down_filename")
また、クローラが使用するHTMLパーサーに合わせて調整することもできます。
ファイル名を変更する目的はクロールをより困難にすることであるため、サイト管理者は時間の経過とともに修正を再現するのが難しくなります。 Webサイトがどのトリックを使用しても破損したファイル名を保存するには、自動化された環境でFirefoxを実行できます。バラよりSeleniumRCに加えて、JavaScriptを描いた後にコンテンツを含むWebページを取得するための良いツールはありますか?そしてLinuxでFirefoxヘッドレスを実行する方法(例:libgtk-x11-2.0.so.0は不要)?