Snažím se stáhnout a analyzovat kód HTML webové stránky. V poslední době se web zdroj pohyboval od mít všechny své informace na jedné straně, aby skrývá její část za javascriptu. K dispozici je zaškrtávací políčko „Show All“, který musí být aktivována v Chcete-li zobrazit celou stránku.
Zde je na internetových stránkách: Source Website
V podstatě se dívám automatizovat načítání této stránky po kliknutí na zaškrtávací políčko. V současné době máme v C program, který stáhne webovou stránku a zpracovává naší analýze. Nejsem si jistý, jestli to může přijmout JavaScript URL v případě, že mohou být použity k řešení tohoto problému (Snažil jsem se pomocí bookmarklet zavolat javascript z adresy URL, ale nebyl jsem schopen dostat se do zvládnout zaškrtávací políčko), ale to může pracovat se soubory, pokud je to jednodušší napsat C # program, který zvládne to.
Raději bych způsob, jak kód to sám, spíše než použít program třetí strany, aby nemuseli nic instalovat na serveru to pokračuje dál. Každá pomoc je velmi ceněn.
Edit: V podstatě, jak mohu automatizovat volání JavaScriptu, který je spojen se, že „Vybrat vše“ políčko, takže můžu chytit HTML stránky obsahující vše, co je to, že se zobrazí po kliknutí na políčko.
Editovat 2: Zde je výstup z 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
Jsem v současné době stále 500 chyby ze serveru. Musím zahrnout všechny tyto GenericWebUserControls v žádosti o příspěvek, stejně? Také musím zahrnout EVENTVALIDATION?
EDIT 3: Tady je nejnovější kód. Jsem stále dostává Server 500 chyb.
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: Já jsem zjistila, že je to postData řetězec, který způsobuje chybu serveru 500. Když udělám to prázdný řetězec, že výstupy celé webové stránky. Ví někdo, jestli se nemýlím v tom, aby všechno, co přišlo z Fiddler2, který měl hodnotu do řetězec POSTDATA? Také, že __VIEWSTATE je neuvěřitelně dlouhý řetězec. Existují limity nebo něco Nejsem si jistý?
EDIT 5: Běžel jsem všechny strun používaných v POSTDATA přes kodér URL, ale já jsem stále dostává serveru 500 chyb. Existuje nějaký způsob, jak pro mě, aby ladění, proč tomu tak po tělo je neplatná?
ŘEŠENÍ: Ok, nemohl jsem se dostat můj postData řetězec správný, ale když jsem se vložit do syrového těla POST to funguje. To vypadá, že to bude stačit, ale moje obava je, jestli to bude pokračovat v práci.













