Jeg prøver å laste ned og analysere HTML på en nettside. Nylig flyttet kilden nettstedet fra å ha all sin informasjon på en side for å skjule en del av det bak javascript. Det er en Show All boksen som må aktiveres for å se hele siden.
Her er nettsiden: Source Hjemmeside
Hovedsak Jeg ønsker å automatisere hente den siden etter at boksen har blitt klikket. Foreløpig har vi et C-program som laster ned nettsiden og håndterer vår analyse. Jeg er ikke sikker på om det kan godta Javascript i nettadressen hvis det kan brukes til å løse dette problemet (jeg har prøvd å bruke en bookmarklet å ringe javascript fra nettadressen, men jeg var ikke i stand til å få det til å håndtere kryss), men den kan håndtere filer hvis det er lettere å skrive et C # program som kan håndtere dette.
Jeg foretrekker en måte å kode dette selv i stedet for å bruke en tredjeparts program for å unngå å måtte installere noe på serveren denne kjører på. Alle hjelpe er verdsatt.
Edit: I utgangspunktet, hvordan kan jeg automat kallet til Javascript som er knyttet til at Select All boksen slik at jeg kan ta tak i html-side som inneholder alt er som vises når du klikker på boksen.
Rediger 2: Her er resultatet fra 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
Jeg er for tiden får 500 feil fra serveren. Trenger jeg å inkludere alle disse GenericWebUserControls i posten forespørsel samt? Også jeg må gjøre for å inkludere EVENTVALIDATION?
EDIT 3: Her er den nyeste koden. Jeg er fortsatt å få serveren 500 feil.
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: Jeg har funnet ut at det er den POST strengen som forårsaker serveren 500-feil. Hvis jeg gjør det en tom streng, sender det hele nettsiden. Vet noen om jeg er riktig i å måtte sette alt som kom fra Fiddler2 som hadde en verdi i POST streng? Dessuten er det __VIEWSTATE en utrolig lang streng. Er det grenser eller noe jeg er ikke sikker på om?
EDIT 5: Jeg kjørte alle strengene som brukes i POST gjennom en URL koder, men jeg er fremdeles får server 500 feil. Er det noen måte for meg å feilsøke hvorfor det innlegget kroppen er ugyldig?
LØSNING: Ok, jeg kunne ikke få min POST streng riktig, men når jeg limt inn i rå POST kroppen fungerer. Dette ser ut som det vil være bra nok, men min bekymring er om dette vil fortsette å arbeide.













