0

我最近正在挖掘一个网站来建立一些数据库。我已经构建了一个解析检索到的信息的 python 脚本,但问题是它需要一个查询词来检索包含我想查看的信息的网页。这个页面是 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.

如果这个网页使用 GET 方法会容易得多,因为我可以简单地将 url 与查询挂钩,但在 POST 方法中是不可能的。

有什么方法可以打开第 3 步跳过第 1 步和第 2 步?

该网页是在 asp.net 中构建的,但只要有办法做到这一点,就对语言没有限制。

4

2 回答 2

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 事件并将页面重定向到自身,并修改 url 以包含来自 id 文本框的标识符。

但也许以下是最简单的,将代码全部保留在服务器端:

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 -> Control Events (eg button click) -> Page PreRender。

  • 如果页面第一次在 url 中没有标识符的情况下被点击,则不会调用 PopulateListForidentifer 方法,因为 _identifer 从未设置。
  • 但是如果 url 包含一个标识符,则在页面加载事件中设置 _identifer,当调用页面预渲染时会调用 PopulateListForidentifer。
  • 最后,如果页面由于点击了搜索按钮而返回到自身,则调用单击处理程序并将 _identifer 设置为 IdentiferTextbox 的内容;页面预渲染被调用,PopulateListForidentifer 也被调用。请注意,这将覆盖关于 ie 当标识符作为 url 的一部分传递时的点。
于 2012-07-03T05:45:25.223 回答
0

据我了解,您似乎想在搜索表单中模拟 HTTP Post 操作,在不输入 ID 并单击搜索的情况下,您直接希望访问搜索结果。

这是 Scott Hanselman 的博客文章,他在其中讨论了使用 WebClient 的类似主题。

您可能还想检查此线程

于 2012-07-03T06:19:28.733 回答