Программа сбора фактически вызывает веб-страницы на других веб-сайтах через компонент 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.google ниже
Тусклый URL-адрес, HTML
URL=http://www.google;
Html = getHTTPage(URL-адрес)
Response.write HTML
%>
2. Несколько часто используемых функций
Функция ИнСтр
Описание Возвращает позицию, где определенный символ (строка2) впервые появляется в другой строке (строка1).
СинтаксисInStr(строка1, строка2)
Например:
Тусклая строка поиска, SearchChar
SearchString =http://www.google ' Строка для поиска.
SearchChar = blue1000 'Найти blue1000.
MyBK = Instr(SearchString, SearchChar) ' Возврат 8
'Возврат 0, если не найден, например:
ПоискЧар = БК
MyBK = Instr(SearchString, SearchChar) ' Возвращает 0
Средняя функция
Описание: Возвращает указанное количество символов из строки.
SyntaxMid(строка, начало, окончание)
Например:
Дим MyBK
MyBK = Mid (наш дизайн BK (www.google), 7, 12) «Перехватить строку через 12 символов после 7-го символа нашего дизайна BK (www.google)». В этот момент значение MyBK становится www.google.
Заменить функцию
Тусклая строка поиска, SearchChar
SearchString = Наш BK Design — это строка веб-сайта, посвященная созданию веб-сайтов, по которой осуществляется поиск.
SearchString =Replace(SearchString, BK design, Www.google) 'В настоящее время значение SearchString становится нашим Www.google - это ресурс для создания веб-сайтов.
3. Перехватить HTML-код указанной области.
Например, я хочу получить только текстовую часть между <td> и </td> в следующем HTML-коде:
<html>
<title>BK (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 он представлен двумя двойными кавычками). quote, поскольку двойные кавычки являются чувствительным символом для программы.) over=Instr(StrBK,…</td></tr>)'Функция здесь предназначена для получения положения конца строки. 'Кто-то снова спросит:( : Почему перед HTML-кодом, который вызывает программа, стоят три дополнительные точки...? Ответ: Совет: в приведенном выше примере также есть </td></tr> Если вы используете </td></ tr> для поиска, программа ошибочно воспримет </td></tr> в приведенной выше строке как конец строки, которую нужно получить. RsBK=mid(StrBK,start, перезапуск). «Функция здесь заключается в извлечении строки между начальным и конечным символом в StrBK. Я также говорил о средней функции в предыдущем разделе; 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=Content>.
Хорошо, программа изменится на это:
<%
…
Дим 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 может заменить только определенный из них. Мы не можем заменить его одной соответствующей функцией replace, верно?