0

バックアップとミラーリングのためにこの Web サイトからすべてのファイルをダウンロードしようとしていますが、JavaScript リンクを正しく解析する方法がわかりません。

すべてのダウンロードを同じ方法で名前付きフォルダーに整理する必要があります。たとえば、最初のフォルダーには「DAP-1150」という名前のフォルダーがあり、その中に「DAP-1150 A1 FW v1.10」という名前のフォルダーがあり、その中に「DAP1150A1_FW110b04_FOSS.zip」というファイルが含まれます。ファイル。Python で beautifulsoup を使用してみましたが、ASP リンクを適切に処理できないようです。

4

2 に答える 2

0

これが何をしているのかです。Firefox の標準のネットワーク インスペクタを使用して、POST 操作のスナップショットを作成しました。私が指摘した他の回答と同様に、これは特によく書かれたWebサイトではないことに注意してください-JS / POSTはまったく使用されるべきではありませんでした.

まず第一に、これが JS です。非常に単純です。

function oMd(pModel_,sModel_){
obj=document.form1;
obj.ModelCategory_.value=pModel_;
obj.ModelSno_.value=sModel_;
obj.Model_Sno.value='';
obj.ModelVer.value='';
obj.action='downloads2008detail.asp';
obj.submit();
}

これらのフィールドに書き込みます:

<input type=hidden name=ModelCategory_ value=''>
<input type=hidden name=ModelSno_ value=''>

したがって、次の URL をターゲットとする POST フォームが必要です。

http://tsd.dlink.com.tw/downloads2008detail.asp

FF のネットワーク アナライザーからのデータ セットの例を次に示します。変更が必要な項目は 2 つだけです (JS リンクから取得します)。これらは通常のスクレイプで取得できます。

  • 入力=OK
  • モデルカテゴリ=0
  • ModelSno=0
  • ModelCategory_=DAP
  • ModelSno_=1150
  • Model_Sno=
  • モデルVer=
  • sel_PageNo=1
  • OS=GPL

実験によって、それらのすべてが必要なわけではないことがわかるでしょう。ブラウザーで GET を使用してみましたが、ターゲット ページが POST を主張しているようです。

それぞれがリモート サーバーでのヒットを表しているため、クリックと送信の間に適切な時間をスクレイパー内に残すことを忘れないでください。人間の遅延をエミュレートして、5 秒をお勧めします。これをあまりにも速く行うと (接続が良好な場合は可能性が高くなります)、リモート側は DoS を行っていると見なし、IP をブロックする可能性があります。スクレイピングのモットーを覚えておいてください: 良いロボットになりましょう!

于 2013-10-23T11:39:30.437 に答える