de
datos también es un programa de ladrón web (no me regañen cuando termine de escribirlo, publicaré algo aquí. Espero que todos tengan alguna idea y estudien juntos).
Al descargar los datos, algunos sitios web requieren iniciar sesión antes de poder verlos. Para obtener los datos correspondientes, esto requiere que enviemos el nombre de usuario y la contraseña de inicio de sesión, pero inicié sesión, pero su servidor no es basura y lo redirigió. y se generaron un total de 2 SESIONES Para esta segunda SESIÓN, no sé cómo capturarla. Así que especulé ^-^ y usé software para capturar la SESIÓN. Creé un software llamado Ethereal y agregué el siguiente código. el encabezado de la solicitud HTTP.
WebClient miWebClient = nuevo WebClient();
cadena clave de sesión = textBox78.Text;
string refererurl=textBox77.Text;
myWebClient.Headers.Clear();
myWebClient.Headers.Add("Cookie",clave de sesión);
myWebClient.Headers.Add("Referer", URL de referencia);
myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3");
Esto engaña al servidor, jaja
2. La segunda parte es descargar el código.
byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
descargar = Encoding.Default.GetString(myDataBuffer);
3. La tercera parte es la coincidencia de datos. Leo la secuencia en los datos, luego uso IndexOf para obtener las posiciones de los dos campos clave y luego uso Substring para obtenerlos. out. Sé que esto es estúpido, pero es difícil usar expresiones regulares (quién puede darme algún consejo). Después de hacer coincidir la cadena, utilicé la siguiente función para eliminar el código HTML:
cadena privada StripHTML (cadena strHtml)
{
cadena [] aryReg ={
@"<script[^>]*?>.*?</script>",
@"<(/s*)?!?((w+:)?w+)(w+(s*=?s*(([""'])( \[""' tbnr]|[^7])*?7|w+)|.{0})|s)*?(/s *)?>",
@"([rn])[s]+",
@"&(quot|#34);",
@"&(amp|#38);",
@"&(es|#60);",
@"&(gt|#62);",
@"&(nbsp|#160);",
@"&(iexcl|#161);",
@"&(centavo|#162);",
@"&(libra|#163);",
@"&(copia|#169);",
@"&#(d+);",
@"-->",
@"<!--.*n"
};
cadena [] aryRep = {
"",
"",
"",
""",
"&",
"<",
">",
" ",
"xa1",//chr(161),
"xa2",//chr(162),
"xa3",//chr(163),
"xa9",//chr(169),
"",
"rn",
""
};
cadena nuevoReg =aryReg[0];
cadena strOutput=strHtml;
para(int i = 0;i<aryReg.Length;i++)
{
Regex regex = new Regex(aryReg[i],RegexOptions.IgnoreCase);
strOutput = regex.Replace(strOutput,aryRep[i]);
}
strOutput.Replace("<","");
strOutput.Replace(">","");
strOutput.Replace("rn","");
devolver strSalida;
}
4. El siguiente paso es almacenarlo en la base de datos. Todo el mundo lo sabe, pero todavía tengo un problema cuando escribo los datos, aparece una EXCEPCIÓN que dice que mi campo es demasiado largo y no se puede escribir en la base de datos. Estoy usando ACCESS, intentaré usar SQL
Si tiene alguna buena sugerencia, déjeme un comentario. Avancemos juntos.