Posso affidarti HtmlAgilityPack!
Mi piacerebbe pensare che si tenta di accedere a un sito Web che utilizza i cookie per determinare se un utente è connesso (o meno). In caso contrario, ti costringerà a registrarti/accedere altrimenti non ti è permesso vedere nulla. Ho ragione?
Il tuo browser memorizza i cookie, il tuo C# no! (in senso lato)
È necessario creare un contenitore di cookie per risolvere il problema.
Il tuo C# -App può accedere, richiedere un cookie/sessione, può prelevare i cookie dal responseheader e quindi dovresti essere in grado di grattare i profili o qualsiasi altra cosa desideri.
Ottieni i dati del post, che viene inviato al server. È possibile utilizzare strumenti/addon come Fiddler, Tamper, ecc.
E.g. PostdataString: user_name = TESTUSER & password = testpassword & language = it & azione% 3Asubmit = Invia
Ecco un frammento è possibile utilizzare.
//Create the PostData
string strPostData = "user_name=" + txtUser.Text + "&password=" + txtPass.Text + "&language=en&action%3Asubmit=Submit";
CookieContainer tempCookies = new CookieContainer();
ASCIIEncoding encoding = new ASCIIEncoding();
byte[] data = encoding.GetBytes(strPostData);
//Create the Cookie
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://www.website.com/login.php");
request.Method = "POST";
request.KeepAlive = true;
request.AllowAutoRedirect = false;
request.Accept = "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
request.ContentType = "application/x-www-form-urlencoded";
request.Referer = "http://www.website.com/login.php";
request.UserAgent = "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:14.0) Gecko/20100101 Firefox/14.0.1";
request.ContentLength = data.Length;
Stream requestStream = request.GetRequestStream();
requestStream.Write(data, 0, data.Length);
HttpWebResponse response;
response = (HttpWebResponse)request.GetResponse();
string sRequestHeaderBuffer = Convert.ToString(response.Headers);
requestStream.Close();
//Stream(-output) of the new website
StreamReader postReqReader = new StreamReader(response.GetResponseStream());
//RichTextBox to see the new source.
richTextBox1.Text = postReqReader.ReadToEnd();
Sarà necessario regolare i cookie parametri in mezzo e aggiungere l'aswell sessionid corrente al codice. Questo dipende dal sito Web richiesto che visiti.
es .:
request.Headers.Add("Cookie", "language=en_US.UTF-8; StationID=" + sStationID + "; SessionID=" + sSessionID);
POF termini di utilizzo non consente raschiatura. – albattran
Usa il tuo debugger e passa attraverso il codice. Metti un punto di interruzione sulla linea 'doc.GetElementsByTagName (....'. Poi controlla cosa viene restituito dal pezzo 'GetElementsByTagName (" textarea "). Contiene un elemento' message'? È un array o solo un singolo elemento – NotMe
@ChrisLively Vedo mittente {messaggio} e base {messaggio}? – IceDawg