Une fois
que j'aurai fini de l'écrire, j'espère que tout le monde aura des idées et étudiera ensemble.
En téléchargeant les données, certains sites Web nécessitent une connexion avant de pouvoir les visualiser. Pour obtenir les données correspondantes, cela nous oblige à envoyer le nom d'utilisateur et le mot de passe de connexion, mais je me suis connecté, mais son serveur n'est pas une poubelle et il l'a redirigé, et un total de 2 SESSIONS ont été générées. Pour cette deuxième SESSION, je ne sais pas comment la capturer. J'ai donc spéculé ^-^ et utilisé un logiciel pour capturer SESSION. J'ai créé un logiciel appelé Ethereal et j'ai ajouté le code suivant. l'en-tête de la requête HTTP.
WebClient monWebClient = new WebClient();
chaîne sessionkey=textBox78.Text;
chaîne refererurl=textBox77.Text;
monWebClient.Headers.Clear();
monWebClient.Headers.Add("Cookie",sessionkey);
myWebClient.Headers.Add("Référent", URL de référence);
myWebClient.Headers.Add("User-agent", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3");
Cela trompe le serveur, haha
2. La deuxième partie consiste à télécharger le code.
byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
download = Encoding.Default.GetString(myDataBuffer);
3. La troisième partie est la correspondance des données, puis j'utilise IndexOf pour obtenir les positions des deux champs clés, puis j'utilise Substring pour les obtenir. out. , je sais que c'est stupide, mais il est difficile d'utiliser des expressions régulières (qui peut me donner des conseils). Après avoir fait correspondre la chaîne, j'ai utilisé la fonction suivante pour supprimer le code HTML :
chaîne privée StripHTML (chaîne strHtml)
{
chaîne [] aryReg ={
@"<script[^>]*?>.*?</script>",
@"<(/s*)?!?((w+:)?w+)(w+(s*=?s*(([""'])( \[""' tbnr]|[^7])*?7|w+)|.{0})|s)*?(/s *)?>",
@"([rn])[s]+",
@"&(quot|#34);",
@"&(amp|#38);",
@"&(lt|#60);",
@"&(gt|#62);",
@"&(nbsp|#160);",
@"&(iexcl|#161);",
@"&(cent|#162);",
@"&(livre|#163);",
@"&(copie|#169);",
@"&#(d+);",
@"-->",
@"<!--.*n"
};
chaîne [] aryRep = {
"",
"",
"",
""",
"&",
"<",
">",
" ",
"xa1",//chr(161),
"xa2",//chr(162),
"xa3",//chr(163),
"xa9",//chr(169),
"",
"rn",
""
};
chaîne newReg =aryReg[0];
chaîne strOutput=strHtml ;
pour(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","");
retourner strOutput ;
}
4. L'étape suivante consiste à les stocker dans la base de données. Tout le monde le sait. Mais j'ai toujours un problème lorsque j'écris les données, une EXCEPTION apparaît, indiquant que mon champ est trop long et ne peut pas être écrit dans la base de données. J'utilise ACCESS, je vais essayer d'utiliser SQL.
5. Si vous avez de bonnes suggestions, laissez-moi un commentaire progressons ensemble.
Source : http://jetadv.cnblogs.com/archive/2006/02/. 18 /333213.html