2

ここでLINK「JavaScript が何をしているかを把握し、それを Python コードでエミュレートする」ことが可能であることが示唆されています。これが私の質問です。javascript:__doPostBack をエミュレートするにはどうすればよいですか?

Web サイトからのコード (全ページのソースはこちらLINK :

<a style="color: Black;" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$gvSearchResults','Page$2')">2</a>

もちろん、私は基本的にここからどこへ行くべきかを知っています。

あなたの助けとアイデアを前もってありがとう

OK、pythonライブラリmechanize、beautifulsoup ....、similarでWebスクレイピングするときにjavascriptボタンをクリックする方法を尋ねる投稿がたくさんあります。多くの「サポートされていません」という回答が、この非 Python ソリューションを使用しています。この問題に対するPythonの解決策は、多くの人にとって大きな利益になると思います. その観点から、Pythonコードではない、またはブラウザーとの対話を必要とする x、y または z を使用するような答えを探していません。

4

1 に答える 1

3

機械化ページは、Python で JavaScript をエミュレートできることを示唆していません。フォームの非表示フィールドを変更できると言っているため、人間がフィールドを選択したという Web サーバーをだまします。自分でターゲットを分析する必要があります。

Python で JavaScript インタープリターを作成したい場合を除き、この問題に対する Python ベースの解決策はありません。

この問題に関する私の考えは、3 つの可能な解決策につながりました。

  1. XULRunnerアプリケーションを作成する
  2. ブラウザの自動化
  3. クライアント側コードの解釈を試みる

それらの 3 つのうち、2 についての議論しか実際に見たことがありません。商用のスクレイピング アプリケーションで 1 に近いものを見たことがあります。このアプリケーションでは、基本的に、サイトを閲覧し、ページ上でスクリプトに実行させたいものを選択することでスクリプトを作成します。今後抽出します。

1 は、 wsgiリクエスト オブジェクトのシリアル化 (JSON ?) を受け入れ、アプリに URL を取得させ、処理されたページを wsgi レスポンス オブジェクトとして送信することで、Python スクリプトを操作できるようにすることができます。これを実現するために、いくつかのミドルウェアを urllib2 にラップすることができます。やり過ぎかもしれませんが、考えるのはちょっと楽しいです。

2 は通常、テスト中心のツールであるSelenium RC (リモート コントロール) を介して実現されます。それはいくつかのメソッドを提供しますgetHtmlSourceが、私がそれを使用していると聞いたほとんどの人は、その API が好きではありません。

3 さっぱりわかりません。node.jsは今とてもホットですが、私は触れていません。自分の Ubuntu マシンでSpidermonkeyをビルドできたことがないので、それにも触れていません。私の推測では、これを行うには、HTML ソースと詳細を JS インタープリターに提供し、JavaScript がサーバーに再接続する場合に備えて、User-Agent などであると偽る必要があります。

1まあ、より技術的に言えば、JavaScript 準拠のユーザー エージェントであり、ほとんどの場合、人間が使用する Web ブラウザーです。

于 2010-10-10T09:17:04.833 に答える