Я пытаюсь загрузить и анализировать HTML веб-страницы. Недавно сайт переехал источник от того, всех их информации на одной странице, чтобы пряча его часть за JavaScript. Там есть флажок «Показать все», который нуждается в активирован для просмотра всей страницы.
Вот сайт: Источник сайт
По существу, я ищу, чтобы автоматизировать получение этой страницы после того, как флажок была нажата. В настоящее время, у нас есть программа C, который загружает веб-страницы и обрабатывает наш синтаксический. Я не уверен, если он может принимать JavaScript в URL, если это может быть использовано для решения этой проблемы (я пытался использовать букмарклет для вызова JavaScript из URL, но я не смог заставить его обрабатывать флажок), но он может обрабатывать файлы, если это проще написать C # программу, которая может справиться с этим.
Я предпочел бы способ закодировать это сам, а не использовать программу третьей стороны, чтобы избежать необходимости устанавливать что-либо на сервере это работает на. Любая помощь очень ценится.
Edit: В принципе, как я могу автоматизировать вызов на JavaScript , который связан с что «Выделить все» флажок , чтобы я мог захватить HTML - страницу , содержащие все это, отображаемые после нажатия флажка.
Редактирование 2: Вот выход из Fiddler2:
__EVENTTARGET ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox
__EVENTARGUMENT
__LASTFOCUS
__VIEWSTATE (REMOVED DUE TO LENGTH)
__EVENTVALIDATION (REMOVED DUE TO LENGTH)
ctl00$ContentPlaceHolder1$GenericWebUserControl$Organization0 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Initial or Amendment1 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Relief Requested2 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Country3 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$Status4 ALL
ctl00$ContentPlaceHolder1$GenericWebUserControl$StartDate5
ctl00$ContentPlaceHolder1$GenericWebUserControl$EndDate5
ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox on
В настоящее время я получаю 500 ОШИБОК с сервера. Мне нужно, чтобы включить все эти GenericWebUserControls в запросе на пост, а также ли? Также мне нужно включить EVENTVALIDATION?
EDIT 3: Вот последний код. Я все еще получаю сервер 500 ошибок.
private void CreateRequest()
{
HttpWebRequest httpWebRequest;
HttpWebResponse httpWebResponse;
StreamWriter streamWriter;
Stream webResponseStream;
StreamReader streamReader;
string postData;
string outputHTML;
postData = String.Format(&__EVENTTARGET={0} + &__VIEWSTATE={1} + &__EVENTVALIDATION=(2)+&ctl00$ContentPlaceHolder1$GenericWebUserControl$ShowAllCheckBox=on +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Organization0=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Initial+or+Amendment1=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Relief+Requested2=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Country3=ALL +&ctl00$ContentPlaceHolder1$GenericWebUserControl$Status4=ALL,EVENTTARGET, VIEWSTATE, EVENTVALIDATION);
httpWebRequest = (HttpWebRequest)WebRequest.Create(http://services.cftc.gov/sirt/sirt.aspx?Topic=ForeignPart30Exemptions);
httpWebRequest.Method = POST;
httpWebRequest.ContentType = application/x-www-form-urlencoded;
httpWebRequest.ContentLength = postData.Length;
streamWriter = new StreamWriter(httpWebRequest.GetRequestStream(), System.Text.Encoding.ASCII);
streamWriter.Write(postData);
streamWriter.Close();
httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse();
webResponseStream = httpWebResponse.GetResponseStream();
streamReader = new StreamReader(webResponseStream);
outputHTML = streamReader.ReadToEnd();
Console.WriteLine(outputHTML);
}
EDIT 4: Я определил , что это строка PostData , которая вызывает ошибку сервера 500. Если я делаю это пустая строка, она выводит всю веб - страницу. Кто - нибудь знает , если я правильно в том , чтобы положить все , что попадало от Fiddler2 , который имел значение в строке PostData? Кроме того , что __VIEWSTATE невероятно длинная строка. Существует ли ограничение или что - то я не уверен?
EDIT 5: Я побежал всех строк , используемых в PostData через URL кодировщик, но я все еще получаю сервера 500 ошибок. Есть ли способ для меня , чтобы отладить почему этот пост орган является недействительным?
РЕШЕНИЕ: Хорошо, я не мог получить мой PostData строки правильно, но когда я вставил в теле сырой POST работает. Это похоже , что это будет достаточно хорошо, но моя забота , если это будет продолжать работать.













