在抓取ASP.NET网页时遇到问题

在抓取ASP.NET网页时遇到问题,asp.net,python,Asp.net,Python,我正试图抓取一个ASP.NET网站,但从帖子中获取结果时遇到问题。我有以下python代码,正在使用httplib2和BeautifulSoup: conn = Http() # do a get first to retrieve important values page = conn.request(u"http://somepage.com/Search.aspx", "GET") #event_validation and viewstate variables retrieved

我正试图抓取一个ASP.NET网站,但从帖子中获取结果时遇到问题。我有以下python代码,正在使用httplib2和BeautifulSoup:

conn = Http()
# do a get first to retrieve important values
page = conn.request(u"http://somepage.com/Search.aspx", "GET")

#event_validation and viewstate variables retrieved from GET here...

body = {"__EVENTARGUMENT" : "",
        "__EVENTTARGET" : "" ,
        "__EVENTVALIDATION": event_validation,
        "__VIEWSTATE" : viewstate,
        "ctl00_ContentPlaceHolder1_GovernmentCheckBox" : "On",
        "ctl00_ContentPlaceHolder1_NonGovernmentCheckBox" : "On",
        "ctl00_ContentPlaceHolder1_SchoolKeyValue" : "",
        "ctl00_ContentPlaceHolder1_SchoolNameTextBox" : "",
        "ctl00_ContentPlaceHolder1_ScriptManager1" : "ctl00_ContentPlaceHolder1_UpdatePanel1|cct100_ContentPlaceHolder1_SearchImageButton",
        "ct100_ContentPlaceHolder1_SearchImageButton.x" : "375",
        "ct100_ContentPlaceHolder1_SearchImageButton.y" : "11",
        "ctl00_ContentPlaceHolder1_SuburbTownTextBox" : "Adelaide,SA,5000",
        "hiddenInputToUpdateATBuffer_CommonToolkitScripts" : 1}

headers = {"Content-type": "application/x-www-form-urlencoded"}
resp, content = conn.request(url,"POST", headers=headers, body=urlencode(body))

当我打印
content
时,我似乎仍然得到与“GET”相同的结果,或者在检索ASP.NET post的结果值时,我是否缺少一个基本概念?

好吧,您需要首先查看您在页面中为GET和post编写的内容,但我希望您能确保两个请求发送的内容不同

下面是你如何做到这一点的


if(!IsPostBack)
{
Response.Write("<h1>Get Request</h1>");
}
else
{
Response.Write("<h1>POST Request</h1>");
}

如果(!IsPostBack)
{
响应。写入(“获取请求”);
}
其他的
{
回复。书面(“后请求”);
}

我希望您使用的是C#as代码隐藏

这在技术上不是一个答案,但您可以使用它来检查使用python代码发送的内容与使用web浏览器发送的内容之间的区别


我发现这在这种情况下通常是有帮助的。

我不认为这能帮我解决问题。但它做到了——代码输入是正确的。除了urlencode函数工作不正常,而且
内容
只是返回对GET的响应。一旦主体正确形成,它将返回一个包含结果的html页面。