Ik probeer te downloaden en te ontleden de HTML van een webpagina. Onlangs heeft de website van de bron verplaatst van het hebben van al hun informatie op een pagina om een deel van het achter javascript te verbergen. Er is een Show All selectievakje moet worden geactiveerd om de hele pagina te bekijken.
Hier is de website: Source Website
In principe Ik ben op zoek voor het automatiseren van het ophalen van die pagina na het selectievakje is geklikt. Momenteel hebben we een C-programma dat de webpagina downloadt en behandelt onze parsing. Ik weet niet zeker of het javascript kunnen accepteren in de URL als dat kan worden gebruikt om dit probleem op te lossen (ik heb geprobeerd met behulp van een bookmarklet aan de javascript uit de URL te bellen, maar ik was niet in staat om het te krijgen op de te behandelen selectievakje), maar het kan bestanden verwerken als het gemakkelijker is om een C # programma dat dit aankan schrijven.
Ik zou een manier vinden om dit zelf te coderen in plaats van gebruik maken van een programma van derden om te voorkomen dat iets te hoeven installeren op de server deze draait op de voorkeur. Alle hulp wordt zeer gewaardeerd.
Edit: In principe, hoe kan ik de oproep om de javascript die is gekoppeld aan die automatiseren Select All checkbox zodat ik pak de HTML-pagina met daarin alles is dat wordt weergegeven na het klikken.
Bewerken 2: Hier is de output van 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
Ik ben momenteel het krijgen van 500 FOUTEN van de server. Moet ik al die GenericWebUserControls in de post onder andere ook? Ook heb ik nodig om de EVENTVALIDATION bevatten?
EDIT 3: Hier is het laatste code. Ik ben nog steeds server 500 fouten.
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: Ik heb vastgesteld dat het de postData string die de oorzaak van de server 500-fout. Als ik maak er een lege string, maar voert de hele webpagina. Weet iemand of ik juist in het hebben van alles wat uit Fiddler2 dat een waarde in de postData snaar had kwam zetten ben? Ook dat __VIEWSTATE is een ongelooflijk lange reeks. Zijn er grenzen of wat ik ben niet zeker over?
EDIT 5: Ik liep alle snaren gebruikt in postData via een URL encoder, maar ik ben nog steeds server 500 fouten. Is er een manier voor mij om te debuggen waarom die post lichaam ongeldig is?
OPLOSSING: Ok, ik kon niet mijn postData snaar correct, maar toen ik geplakt in het ruwe POST lichaam werkt. Dit ziet eruit als het genoeg goed zal zijn, maar mijn zorg is of dit zal blijven werken.













