2

いくつかのフィールド、いくつかのテキスト、およびいくつかの非表示を持つフォームを使用しています。問題は、mechanize.Browserオブジェクトが「見る」フィールドのリストを見ると、いくつかの重要な非表示フィールドが欠落していることですが、すべてではありません。この同様の質問に対する最も一般的な回答によると、これはWebページがユーザーエージェント文字列をクエリしているために発生しています。それは私には当てはまりません、そして私は2つの理由でこれを知っています:

  1. 「スクレイプされた」フォームをファイルに保存すると、欠落しているフィールドが表示され、
  2. その解決策が示唆するように、ブラウザオブジェクトのユーザーエージェント文字列を変更しましたが、役に立ちません。

私を助けてくれるのは、その問題に対する2番目に人気のある解決策ですが、これがなぜであるかはわかりません。Mechanizeが一部の非表示のフォームフィールドを「表示」し、他のフィールドは「表示」せず、欠落しているフィールドを手動で入力する必要があるのはなぜですか。

4

1 に答える 1

1

確かに、あなたが実際に何をしようとしているのかはわかりませんが、何年もの間 Web ページをスクレイピングしてきた者として、一方的なアドバイスをしなければなりません。あらかじめお詫び申し上げます。

JavaScript を扱えるものに移行することを強くお勧めします。Mechanize は優れたモジュールで、昔は驚くほど便利でしたが、Web は点滅するライト、CSS、クリックしなければならない踊る赤ちゃんばかりです。

私がこれを言う理由は、「隠された」フィールドが空想的なものである可能性があるか、四角いペグを丸い穴に打ち込むだけでどのように機能するかをリバースエンジニアリングしようとして何時間も無駄にするjavascriptで変更されたフォームである可能性があるためです.

私が提案する Mechanize の最新の、しかし残念ながら巨大な重量の代替品は次のとおりです。

于 2012-11-12T20:24:41.727 に答える