Так называемая программа сбора данных также является программой веб-вора (пожалуйста, не ругайте меня. После того, как я закончу ее писать, я что-нибудь выложу здесь, надеюсь, у всех есть идеи и вместе изучим
1. В начале)
.загружая данные, некоторые веб-сайты требуют входа в систему, прежде чем вы сможете их просмотреть. Чтобы получить соответствующие данные, нам необходимо отправить имя пользователя и пароль для входа, но я вошел в систему, но его сервер не мусор, и он его перенаправил, и всего было создано 2 СЕАНСА. Для этого второго СЕАНСА я не знаю, как его захватить. Поэтому я подумал ^-^ и использовал программное обеспечение для захвата СЕАНСА. Я создал программное обеспечение под названием Ethereal и добавил в него следующий код. заголовок HTTP-запроса.
WebClient myWebClient = новый WebClient();
строка sessionkey = textBox78.Text;
строка Refererurl = textBox77.Text;
myWebClient.Headers.Clear();
myWebClient.Headers.Add("Cookie",sessionkey);
myWebClient.Headers.Add("Referer", Refererurl);
myWebClient.Headers.Add("Агент пользователя", "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.5) Gecko/20031107 Debian/1.5-3");
Это обманывает сервер, хаха
2. Вторая часть — скачать код.
byte[] myDataBuffer = myWebClient.DownloadData(remoteUri);
download = Encoding.Default.GetString(myDataBuffer);
Третья часть – сопоставление данных. Я считываю поток с данными, затем использую IndexOf, чтобы получить позиции двух ключевых полей, а затем использую Substring для их получения. out. Я знаю, что это глупо, но использовать регулярные выражения сложно (кто может дать мне совет). После сопоставления строки я использовал следующую функцию для удаления HTML-кода:
частная строка StripHTML (строка strHtml)
{
строка [] 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);",
@"&(цент|#162);",
@"&(фунт|#163);",
@"&(копия|#169);",
@"&#(d+);",
@"-->",
@"<!--.*n"
};
строка [] aryRep = {
"",
"",
"",
""",
"&",
"<",
">",
" ",
"xa1",//chr(161),
"xa2",//chr(162),
"xa3",//chr(163),
"xa9",//chr(169),
"",
"рн",
""
};
строка новыйReg =aryReg[0];
строка strOutput = strHtml;
for(int i = 0;i<aryReg.Length;i++)
{
регулярное выражение = новое регулярное выражение(aryReg[i],RegexOptions.IgnoreCase);
strOutput = regex.Replace(strOutput,aryRep[i]);
}
strOutput.Replace("<","");
strOutput.Replace(">","");
strOutput.Replace("rn","");
вернуть стрВыход;
}
4. Следующий шаг — сохранить его в базе данных. Это все знают. Но у меня все равно есть проблема. Когда я записываю данные, появляется ИСКЛЮЧЕНИЕ, говорящее, что мое поле слишком длинное и не может быть записано в базу данных. Я использую ACCESS, попробую использовать SQL
5. Если у вас есть хорошие предложения, оставьте мне комментарий.
Источник: http://jetadv.cnblogs.com/archive/2006/02/. 18 /333213.html