2010-03-24 3 views
0

Я пытаюсь очистить веб-сайт ASP.NET, но у меня проблемы с получением результатов из сообщения. У меня есть следующий код питона и я использую httplib2 и BeautifulSoup:Не удалось очистить веб-страницу ASP.NET

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?

ответ

2

Это технически не ответ, но вы могли бы использовать Fiddler исследовать разницу между тем, что вы отправляете свой код на Python, в отличие от того, что было бы отправлено, если бы вы использовали веб-браузер для публикации.

Я нахожу, что обычно помогает в таких ситуациях.

+0

Я не думал, что это поможет мне решить эту проблему. Но это так - ввод кода был прав. За исключением того, что функция urlencode работала неправильно, а 'content' просто возвращал ответ GET. После правильного формирования тела он вернул html-страницу с результатами. – Seth

0

Ну, вам нужно сначала увидеть, что вы написали на странице для получения и публикации, но я надеюсь, что вы убедитесь, что оба запроса отправляют различное содержимое.

вот как вы можете сделать это


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

Я надеюсь, что вы используете C# как код позади

Смежные вопросы