0

私は最近、データベースを構築するためにWebサイトをマイニングしています。取得した情報を解析するPythonスクリプトを既に作成しましたが、問題は、表示したい情報を含むWebページを取得するためにクエリワードが必要になることです。また、このページはPOSTメソッドであるため、このページがページリストを取得する方法がわかりません。

明確に理解するための概要を説明するには:

1. on inputKeyword.aspx : This contains a form to input a query(let's say ID)
                        When I input an ID and press search, it retrievs a 
                        relevant list
2. Press Search
3. on inputKeyword.aspx : A relevant list is showed on the same aspx page
                        (which means POST method), so I cannot see how this query
                        works on inputKeyword.aspx page.

このWebページがGETメソッドの場合は、クエリを使用してURLをフックするだけでよいため、非常に簡単ですが、POSTメソッドでは不可能です。

ステップ1と2をスキップしてステップ3を開く方法はありますか?

Webページはasp.netに組み込まれていますが、これを行う方法がある限り、言語に制限はありません。

4

2 に答える 2

0

私が理解していることから、ID を入力して検索をクリックすることなく、検索結果に直接アクセスしたい検索フォームで HTTP Post 操作をシミュレートしたいようです。

これはScott Hanselman によるブログ投稿で、WebClient を使用して同様のトピックについて議論しています。

このスレッドを確認することもできます

于 2012-07-03T06:19:28.733 に答える
0

私の理解が正しければ、クエリ文字列の一部としてIDを受け入れることができるようになりたいと考えています。例えば

http://your.domain.com/inputKeyword.aspx?ID=555

Request.QueryString[param]したがって、ページ読み込みイベントでは、次の例に示すように、リクエスト オブジェクトのクエリ パラメータを確認できます。

protected void Page_Load(object sender, EventArgs e)
{
    string id = Request.QueryString["ID"];
    if (!string.IsEmptyOrNull(id))
    {
        //do something with the requested identifier
    }       
}

: を使用Page.IsPostBack()して、ページが初めてヒットしたのか、ボタン クリックの結果としてポスト バックされたのかを判断できます。

検索ボタンを正しく動作させるには、いくつかのオプションがあります。例えば; JavaScript を使用してボタンの onclick イベントをキャプチャし、id テキストボックスからの識別子を含むように修正された URL でページをそれ自体にリダイレクトできます。

しかし、おそらく次のコードが最も簡単で、コードをすべてサーバー側に保持します。

private _identifer string;

protected void Page_Load(object sender, EventArgs e)
{
    string id = Request.QueryString["ID"];
    if (!string.IsEmptyOrNull(id))
    {
        _identifer = id;
    }
}

protected void SearchButton_Click(object sender, EventArgs e)
{
    _identifer = IdentiferTextbox.Text;
}

protected void Page_PreRender(object sender, EventArgs e)
{
    if (!string.IsEmptyOrNull(_identifer))
    {
        PopulateListForidentifer(_identifer);
    }
}

基本的に、この例は、シナリオに対処できることを示しています。ASP.Net のページ ライフ サイクルは、イベントが Page_Load -> コントロール イベント (ボタン クリックなど) -> Page PreRender の順序で処理されることを意味します。

  • URL に識別子を指定せずにページに初めてアクセスした場合、_identifer が設定されていないため、PopulateListForidentifer メソッドは呼び出されません。
  • ただし、URL に識別子が含まれている場合は、ページの読み込みイベントで _identifer が設定され、ページの事前レンダリングが呼び出されると、PopulateListForidentifer が呼び出されます。
  • 最後に、検索ボタンが押されたためにページが自分自身にポスト バックしている場合は、クリック ハンドラーが呼び出され、_identifer が IdentiferTextbox のコンテンツに設定されます。ページ prerender が呼び出され、PopulateListForidentifer も呼び出されます。これは、識別子が URL の一部として渡されたときのポイントを上書きすることに注意してください。
于 2012-07-03T05:45:25.223 に答える