我最近在挖掘一个网站来构建一些数据库。我已经构建了一个解析检索信息的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中构建的,但只要有办法就可以对语言进行限制。
答案 0 :(得分:0)
如果我理解正确,您希望能够接受 ID 作为查询字符串的一部分。例如
因此,在页面加载事件中,您可以检查查询参数的请求对象,即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 - >控制事件(例如按钮点击) - > Page PreRender。
答案 1 :(得分:0)
根据我的理解,您似乎想在搜索表单中模拟HTTP Post操作,无需输入ID并单击搜索,您就可以直接访问搜索结果。
以下是Scott Hanselman的Blog Post,他使用WebClient讨论了类似的主题。
您可能还想查看this thread