1

チェックボックスを備えた何百ものテーブル行がある作業のために Web ページをスクレイピングしようとしています。フォームを送信するには、javascript 関数を呼び出すボタンをクリックする必要があります。html のボタンは次のようになります。

<a onclick="JavaScript: return verifyChecked('Resend the selected request for various approvals?');"
id="_ctl0_cphMain_lbtnReapprove"
title="Click a single request to send to relevant managers for reapproval."
class="lnkDBD" href="javascript:__doPostBack('_ctl0$cphMain$lbtnReapprove','')"
style="border-color:#0077D4;border-width:1px;border-style:Solid;text-decoration: overline;">&nbsp;Resend&nbsp;</a>

美しいスープのようなライブラリを使用すると、投稿データをURLに追加してフォームを送信できますが、チェックボックスをオンにしてこのjavascriptボタンを「クリック」するにはどうすればよいですか? ウェブサイトは一種のヘルプ デスクであり、この特定のボタンについては、一度に 1 つのリクエストしかチェックできず、再送信が必要なリクエストが何百もある場合、非常に時間がかかります。

チェックボックスをオンにすると、これを行いたいことを確認するメッセージもポップアップ表示されますが、それがプログラムによる送信に影響するかどうかはわかりません。

編集: doPostBack メソッドを含めるのを忘れていました。

<script type="text/javascript"> 
<!--
var theForm = document.forms['aspnetForm'];
if (!theForm) {
    theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
    if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
        theForm.__EVENTTARGET.value = eventTarget;
        theForm.__EVENTARGUMENT.value = eventArgument;
        theForm.submit();
    }
}
// -->
</script>
4

3 に答える 3

2

このような場合は、セレンのようなブラウザ自動化ライブラリを使用する方がよいでしょう。

于 2012-05-05T08:54:08.040 に答える
2

Firefox とFirebugを入手し、 Firebugを開いてページをロードし、コンソール タブで実際にサーバーに送信されているものを確認します。

次に、好きなツールを使用して送信を繰り返すだけです。

ここに画像の説明を入力

于 2012-05-02T01:45:57.560 に答える
1

Imacrosをお試しください。単純なブラウザの自動化には優れています。あなたはあなたのセッションを記録することができ、それはそれに基づいてコードを作ります。より多くのロジックがある場合は、複雑でないドキュメントの標準プログラミングで高速化できます。言語/スクリプトの外でも計算できます。たとえば、私がこれを使用したいくつかのプロジェクト:

1)ビジネスリードを収集する:サイトにはすべての小売店のリストがありましたが、ユーザーが入力した郵便番号のすぐ近くにすべてを表示することはできませんでした。スプレッドシートに大量の郵便番号を入力し、実行すると、csvから各郵便番号を調べて、情報をスクレイプしてcsvファイルに保存します。5分ごとにPCでVPNプログラムを開き、IPを変更します。かかった。作るのに20分。

プログラミングを始めたら大丈夫ですが、サイトが変更された場合のデバッグが簡単で、「コード」が非常に簡単で、他のスクリプトやファイルを簡単に呼び出すことができるため、これが最善の方法だと思います。Firefoxアドオンは最も安定していて無料です。

于 2012-05-06T13:56:23.597 に答える