3

ウェブページの内容を削りたい。コンテンツは、そのサイトのフォームに記入して送信した後に作成されます。

最終結果のコンテンツ/ウェブページをスクレイプする方法を読みましたが、プログラムでフォームを送信するにはどうすればよいですか?

私はPythonを使用していて、フォームを含む元のWebページを取得し、それを解析し、フォームパラメーターを取得してから、Xを実行する必要があるかもしれないことを読みました。

誰かが私を厳密な方向に向けることができますか?

4

4 に答える 4

2

フォームのデータを含む HTTP リクエストを生成する必要があります。

フォームは次のようになります。

<form action="submit.php" method="POST"> ... </form>

これは、リクエストする URL が www.example.com/submit.php であり、リクエストが POST であることを示しています。

フォームには、次のようないくつかの入力項目があります。

<input type="text" name="itemnumber"> ... </input>

要求された URL の末尾に追加された URL 用にエンコードされた、これらすべての入力 name=value ペアの文字列を作成する必要があります。これは、www.example.com/submit.php?itemnumber=5234&otherinput=othervalue などになります... GET で問題なく動作します。POST は少しトリッキーです。

</motivation>

S.Lottのリンクをたどって、ライブラリサポートをより簡単に使用してください:P

于 2008-12-26T13:25:55.383 に答える
2

Pythonを使用すると、次の手順が必要になると思います。

  1. フォームを含む Web ページを解析し、フォームの送信アドレスと送信方法 ("post" または "get") を見つけます。

これはhtmlファイルのフォーム要素を説明しています

  1. urllib2 を使用してフォームを送信します。post メソッドの URL とデータを生成するには、urllib の「urlencode」、「quote」などの関数が必要になる場合があります。詳細については、ライブラリのドキュメントを参照してください。
于 2008-12-26T13:29:29.573 に答える
2

同様の質問 - options-for-html-scraping - から、Python でBeautiful Soupを使用できることがわかります。

Beautiful Soup は、スクリーン スクレイピングのような迅速なターンアラウンド プロジェクト用に設計された Python HTML/XML パーサーです。次の 3 つの機能が強力です。

  1. 美しいスープは、悪いマークアップを与えても窒息しません。これにより、元のドキュメントとほぼ同じ意味を持つ解析ツリーが生成されます。これは通常、必要なデータを収集して逃げるのに十分です。
  2. Beautiful Soup は、構文木をナビゲート、検索、および変更するためのいくつかの単純なメソッドと Python のイディオムを提供します。これは、ドキュメントを分析し、必要なものを抽出するためのツールキットです。アプリケーションごとにカスタム パーサーを作成する必要はありません。
  3. Beautiful Soup は、受信ドキュメントを Unicode に、送信ドキュメントを UTF-8 に自動的に変換します。ドキュメントでエンコーディングが指定されておらず、Beautiful Soup がエンコーディングを自動検出できない場合を除き、エンコーディングについて考える必要はありません。次に、元のエンコーディングを指定するだけです。

2008 年 11 月 12 日、珍しい名前がホストの注目を集めました。

于 2008-12-26T13:45:29.417 に答える
-1

あなたはjavascriptでそれを行うことができます。フォームが次のようなものである場合:

<form name='myform' ...

次に、javascriptでこれを行うことができます:

<script language="JavaScript">
function submitform()
{
document.myform.submit();
}
</script> 

リンクまたはボタンの「onClick」属性を使用して、このコードを呼び出すことができます。ページが読み込まれたときに自動的に呼び出すには、要素の「onLoad」属性を使用します。

<body onLoad="submitform()" ...>
于 2008-12-26T13:10:50.190 に答える