Хотите использовать ASP для создания своей любимой программы по сбору воров? Прочитав следующую статью, вы сможете создать ее самостоятельно? принцип
Программа сбора фактически вызывает веб-страницы на других веб-сайтах через компонент XMLHTTP в XML. Например, многие программы сбора новостей вызывают новостные веб-страницы Sina, при этом часть HTML на них заменяется, а рекламные объявления также фильтруются. Преимущества использования программы сбора данных: нет необходимости поддерживать веб-сайт, поскольку данные в программе сбора поступают с других веб-сайтов и будут обновляться по мере обновления веб-сайта, что позволяет экономить ресурсы сервера; Программа сбора содержит всего несколько файлов, а весь веб-контент взят с других веб-сайтов. Недостатками являются: нестабильность: если целевой веб-сайт пойдет не так, программа также будет работать неправильно, а если целевой веб-сайт обновляется и поддерживается, программу сбора данных также необходимо будет соответствующим образом изменить скорость, поскольку это удаленный вызов; Скорость такая же быстрая, как чтение данных на локальном сервере. Это определенно медленнее.
1. Дела
Ниже приводится краткое объяснение применения XMLHTTP в ASP.
Скопируйте код кода следующим образом:
<%
'Обычно используемые функции
'1. Введите URL-адрес целевой веб-страницы, а возвращаемое значение getHTTPPage — это HTML-код целевой веб-страницы.
функция getHTTPage (url)
dimHttp
установите Http=server.createobject(MSXML2.XMLHTTP)
Http.open GET, URL, ложь
HTTP.send()
если Http.readystate<>4, то
функция выхода
конец, если
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
установить http=ничего
если err.number<>0, то err.Clear
конечная функция
'2. Преобразование Ranma. Непосредственно используйте xmlhttp для вызова веб-страниц с китайскими иероглифами. Вы можете преобразовать его через компонент adodb.stream.
Функция BytesToBstr(тело)
тусклый объектный поток
установить objstream = Server.CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Открыть
objstream.Напишите тело
objstream.Position = 0
objstream.Type = 2
objstream.Charset = GB2312 'Преобразуйте исходную кодировку UTF-8 по умолчанию в кодировку GB2312. В противном случае прямое использование компонента XMLHTTP для вызова веб-страницы с китайскими символами приведет к искажению кода.
BytesToBstr = objstream.ReadText
objstream.Close
установить objstream = ничего
Конечная функция
'Попробуйте вызвать html-содержимое http://www.vevb.com
Тусклый URL-адрес, HTML
URL=http://www.vevb.com;
Html = getHTTPage(URL-адрес)
Response.write HTML
%>
2. Несколько часто используемых функций
(1) Функция InStr
описывать
Возвращает позицию, где определенный символ (строка2) впервые появляется в другой строке (строка1).
грамматика
InStr(строка1, строка2)
Например:
Тусклая строка поиска, SearchChar
SearchString =http://www.vevb.com ' Строка для поиска.
SearchChar = jb51 'Найти jb51.
MyBK = Instr(SearchString, SearchChar) ' Возврат 8
'Возврат 0, если не найден, например:
ПоискЧар = БК
MyBK = Instr(SearchString, SearchChar) ' Возвращает 0
(2) Средняя функция
описывать
Возвращает указанное количество символов из строки.
грамматика
Mid(строка, начало, окончание)
Например:
Дим MyBK
MyBK = Mid (наш дизайн BK (www.google), 7, 12) 'Перехватить строку через 12 символов после 7-го символа нашего дизайна BK (www.google)
«В настоящее время ценность MyBK становится www.google.
(3) Функция замены
Тусклая строка поиска, SearchChar
SearchString = Наш BK Design — это строка веб-сайта, посвященная созданию веб-сайтов, по которой осуществляется поиск.
SearchString =Replace(SearchString,BK design,Www.google)
«В настоящее время значение SearchString становится нашим Www.google — это ресурс для создания веб-сайтов.
3. Перехватить HTML-код указанной области.
Например, я хочу получить только текстовую часть между <td> и </td> в следующем HTML-коде:
<html>
<title>(www.google)Поисковая система Google</title>
<тело>
<таблица>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) Поисковая система Google — это сайт со множеством ресурсов...</td></tr>
</таблица>
</тело>
</html>
<%
…
Дим StrBK,старт,конец,RsBK
StrBK=getHTTPPage (адрес веб-страницы)
start=Instr(StrBK,<td id=Content>) 'Здесь функция позволяет получить позицию начала строки. Здесь кто-то спросит: исходный код — <td id=Content>, почему вы вызываете сюда <td id=Content>? Ответ: в asp (точнее, в VBscript он представлен двумя двойными кавычками). кавычка, поскольку двойная кавычка является чувствительным символом для программы).
over=Instr(StrBK,…</td></tr>)'Функция здесь предназначена для получения позиции конца строки.
'Кто-то снова спросит:( : Почему перед HTML-кодом, который вызывает программа, стоят три дополнительные точки...? Ответ: Совет: в приведенном выше примере также есть </td></tr> Если вы используете </td></ tr> для поиска, программа ошибочно воспримет </td></tr> в приведенной выше строке как конец строки, которую нужно получить.
RsBK=mid(StrBK,start,over-start) 'Функция здесь заключается в извлечении строки между начальным и верхним символом в StrBK. Я также говорил о функции middle в предыдущем разделе; over-start предназначен для вычисления расстояния между начальной и конечной позицией, которое представляет собой количество символов.
response.write(RsBK) 'Окончательно выводим содержимое, полученное программой
%>
Не радуйтесь: запустив его, вы обнаружите ошибку в html-коде страницы. Почему? Потому что html-код, который вы получаете:
<td id=Content>BK (www.google) Поисковая система Google — это сайт со множеством ресурсов...
Вы это видели? Имеется неполный HTML-код! Что делать? Оператор start=Instr(StrBK,<td id=Content>) получает номер позиции <td id=Content> в StrBK. Теперь мы можем добавить 17 после оператора программы, тогда программа укажет на позицию символа после. <td id=Содержимое>.
Хорошо, программа изменится на это:
<%
…
Дим StrBK,старт,конец,RsBK
StrBK=getHTTPPage (адрес веб-страницы)
start=Instr(StrBK,<td id=Content>) + 17
over=Instr(StrBK,…</td></tr>) 'Здесь вы также можете вычесть семь (-7), чтобы удалить 3 очка
RsBK=mid(StrBK,старт,перестарт)
ответ.запись(РСБК)
%>
Это нормально, мы можем украсть то, что хотим, и показать это на нашей странице, хаха~
4. Удалить или изменить полученные символы
Замените BK(www.google) в RsBK на BK:
РсБК=заменить(РсБК,БК(www.google),БК)
Или удалите (www.google) напрямую:
RsBK=replace(RsBK,(www.google),)
Хорошо, теперь RsBK становится: Поисковая система BK Google — это сайт со множеством ресурсов...
Но на самом деле функция replace может не подойти для некоторых ситуаций. Например, мы хотим удалить все соединения в определенной строке. Соединения могут включать в себя множество типов, а replace может заменить только один из них. Другая соответствующая функция замены для ее замены?
Но вместо этого вы можете использовать регулярные выражения для выполнения этой работы. Я не буду здесь вдаваться в подробности.
(1) Как обработать преобразование страниц чужого веб-сайта в свой собственный?
Ответ: используйте функцию замены и передачу параметров страницы.
Например, страница другой стороны содержит такой код перелистывания страниц: <a href=2.htm>Следующая страница</a>. Мы можем сначала использовать упомянутый выше контент, чтобы получить эту строку, а затем использовать функцию замены: RsBK=. replace( RsBK,<a href=,<a href=page.asp?Url=)
Затем получите значение параметра Url в программе page.asp и, наконец, используйте технологию сбора, чтобы получить нужный контент на следующей странице.
(2) Как сохранить полученный контент в базе данных
Из-за ограниченности места я кратко упомяну об этом здесь.
На самом деле это очень просто:
Обработайте украденный контент, чтобы предотвратить ошибки внедрения SQL при записи в базу данных, например: replace(String,','')
Затем выполните команду sql для вставки в базу данных, и все будет в порядке ~
Выше приведены лишь некоторые основные применения компонента XMLHTTP. Фактически, он также может реализовывать множество функций, таких как сохранение удаленных изображений на локальный сервер и использование компонента adodb.stream для сохранения полученных данных в базу данных. Коллекция имеет широкий спектр функций и применений.