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