Я разработал несколько программ сбора и изучил множество кодов программ сбора, поэтому немного понимаю принципы работы программ сбора. Сначала поговорим о принципе сбора:
Основные этапы процедуры сбора следующие:
1. Получить содержимое собранных страниц
2. Извлеките все используемые данные из кода сбора данных.
1. Получить содержимое собранных страниц
Наиболее распространенные методы ASP, которые я знаю в настоящее время для получения содержимого собранных страниц:
1. Используйте компонент serverXMLHTTP для получения данных.
Скопируйте код кода следующим образом:
Функция GetBody (веберл)
'Создать объект
Тусклый ObjXMLHTTP
Установите ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP)
'Файл запроса в асинхронной форме
ObjXMLHTTP.Откройте GET,weburl,False
ObjXMLHTTP.send
В то время как ObjXMLHTTP.readyState <> 4
ObjXMLHTTP.waitForResponse 1000
Венд
«Получите результат
GetBody=ObjXMLHTTP.responseBody
'Освободить объект
Установить ObjXMLHTTP=Ничего
Конечная функция
Метод вызова:
GetBody (URLf-адрес файла)
2. Или компонент XMLHTTP для получения данных.
Скопируйте код кода следующим образом:
Функция GetBody (веберл)
'Создать объект
Установить получение = CreateObject(Microsoft.XMLHTTP)
С поиском
.Откройте Get, weburl, False, ,
.Отправлять
GetBody = .ResponseBody
Конец с
'Освободить объект
Установить получение = Ничего
Конечная функция
Метод вызова:
GetBody (URLf-адрес файла)
Содержимое данных, полученное таким способом, все равно необходимо закодировать и преобразовать, прежде чем его можно будет использовать.
Скопируйте код кода следующим образом:
Функция BytesToBstr(body,Cset)
тусклый объектный поток
установить objstream = Server.CreateObject(adodb.stream)
objstream.Type = 1
objstream.Mode =3
objstream.Открыть
objstream.Напишите тело
objstream.Position = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Close
установить objstream = ничего
Конечная функция
Метод вызова: BytesToBstr (данные для преобразования, кодирование). Кодировка обычно используется как GB2312 и UTF-8.
2. Извлеките все используемые данные из кода сбора данных.
В настоящее время у меня есть следующие методы:
1. Используйте встроенную функцию MID ASP для перехвата необходимых данных.
Скопируйте код кода следующим образом:
Тело функции(wstr,start,over)
start=Новостная строка(wstr,start)
'Установим уникальный начальный тег данных, которые необходимо обработать
over=Новостная строка(wstr,over)
«Соответствующий началу — это единственный конечный тег данных, которые необходимо обработать.
тело = середина (wstr, старт, перезапуск)
'Установим диапазон отображаемых страниц
Конечная функция
Метод вызова: тело (содержимое собранной страницы, начальный тег, конечный тег)
2. Используйте регулярные выражения для получения необходимых данных
Скопируйте код кода следующим образом:
Тело функции(wstr,start,over)
Set xiaoqi = Объект конфигурации набора новых регулярных выражений
xiaoqi.IgnoreCase = True'Игнорировать регистр
xiaoqi.Global = True» настроен на полнотекстовый поиск.
xiaoqi.Pattern = &start&.+?&over&'регулярное выражение
Set Matches =xiaoqi.Execute(wstr)'Начать выполнение конфигурации
установить сяоци=ничего
тело=
За каждый матч в матчах
body=body&Match.Value 'Сопоставление цикла
Следующий
Конечная функция
Метод вызова: тело (содержимое собранной страницы, начальный тег, конечный тег)
Подробные идеи по процедурам сбора:
1. Получите адрес каждой страницы постраничного списка веб-сайта.
В настоящее время большинство динамических веб-сайтов имеют правила для адресов подкачки, такие как:
динамическая страница
Первая страница: index.asp?page=1
Вторая страница: index.asp?page=2.
Третья страница: index.asp?page=3.
.....
статическая страница
Первая страница: page_1.htm
Вторая страница: page_2.htm
Третья страница: page_3.htm
.....
Чтобы получить адрес каждой страницы списка подкачки веб-сайта, вам нужно всего лишь использовать переменные для замены изменяющихся символов адреса каждой страницы, например: page_<%=&page&%>.htm
2. Получите содержимое страницы постраничного списка собранного веб-сайта.
3. Извлеките адрес подключения URL-адреса страницы с собранным контентом из кода списка страниц.
Большинство ссылок на страницы контента на страницах с разбивкой на страницы также имеют фиксированные правила, такие как:
<a href=url1>Соединение 1</a> <br>
<a href=url2>Соединение 2</a> <br>
<a href=url3>Соединение 3</a> <br>
Используйте следующий код, чтобы получить коллекцию URL-соединений
Скопируйте код кода следующим образом:
Установить xiaoqi = Новое регулярное выражение
xiaoqi.IgnoreCase = Истина
xiaoqi.Global = Истина
xiaoqi.Pattern = .+?
Установить совпадения =xiaoqi.Execute (содержимое списка страниц)
установить сяоци=ничего
URL=
За каждый матч в матчах
url=url&Match.Value
Следующий
4. Получите содержимое страницы собранного контента и перехватите данные, которые необходимо получить со страницы собранного контента, в соответствии с меткой извлечения.
Поскольку это динамически генерируемая страница, большинство страниц контента имеют одинаковые теги HTML. Мы можем извлечь необходимые части контента на основе этих обычных тегов.
нравиться:
Каждая страница имеет заголовок веб-страницы <title>Заголовок веб-страницы</title>. Вы можете использовать функцию перехвата MID, которую я написал выше, чтобы получить значение между <title></title>, или вы можете использовать для его получения регулярные выражения.
Пример: body(<title>Заголовок веб-страницы</title>,<title>,</title>)