Desenvolvi vários programas de coleta e estudei muitos códigos de programas de coleta, por isso tenho um pouco de compreensão dos princípios dos programas de coleta. Vamos falar primeiro sobre o princípio da coleta:
As principais etapas do procedimento de cobrança são as seguintes:
1. Obtenha o conteúdo das páginas coletadas
2. Extraia todos os dados utilizados do código de aquisição
1. Obtenha o conteúdo das páginas coletadas
Os métodos ASP comumente usados que conheço atualmente para obter o conteúdo das páginas coletadas são:
1. Use o componente serverXMLHTTP para obter dados
Copie o código do código da seguinte forma:
Função GetBody(weburl)
'Criar objeto
Dim ObjXMLHTTP
Definir ObjXMLHTTP=Server.CreateObject(MSXML2.serverXMLHTTP)
'Arquivo de solicitação, em formato assíncrono
ObjXMLHTTP.Open GET,weburl,Falso
ObjXMLHTTP.send
Enquanto ObjXMLHTTP.readyState <> 4
ObjXMLHTTP.waitForResponse 1000
Wend
'Obtenha o resultado
GetBody=ObjXMLHTTP.responseBody
'Liberar objeto
Definir ObjXMLHTTP=Nada
Função final
Método de chamada:
GetBody(endereço URLf do arquivo)
2. Ou componente XMLHTTP para obter dados
Copie o código do código da seguinte forma:
Função GetBody(weburl)
'Criar objeto
Definir recuperação = CreateObject (Microsoft.XMLHTTP)
Com recuperação
.Abra Get, weburl, Falso, ,
.Enviar
GetBody = .ResponseBody
Terminar com
'Liberar objeto
Definir recuperação = nada
Função final
Método de chamada:
GetBody(endereço URLf do arquivo)
O conteúdo dos dados obtido desta forma ainda precisa ser codificado e convertido antes de poder ser usado.
Copie o código do código da seguinte forma:
Função BytesToBstr(corpo,Cset)
escurecer objstream
definir objstream = Server.CreateObject (adodb.stream)
objstream.Type = 1
objstream.Modo =3
objstream.Open
objstream.Escrever corpo
objstream.Posição = 0
objstream.Type = 2
objstream.Charset = Cset
BytesToBstr = objstream.ReadText
objstream.Fechar
definir objstream = nada
Função final
Método de chamada: BytesToBstr (dados a serem convertidos, codificação)' a codificação é comumente usada como GB2312 e UTF-8
2. Extraia todos os dados utilizados do código de aquisição
Os métodos que tenho atualmente são:
1. Use a função MID integrada do ASP para interceptar os dados necessários
Copie o código do código da seguinte forma:
Corpo da função(wstr,start,over)
start=Newstring(wstr,iniciar)
'Defina a tag inicial exclusiva dos dados que precisam ser processados
over=Newstring(wstr,over)
'Correspondente ao início é a única tag final dos dados que precisam ser processados.
corpo = meio (wstr, início, início excessivo)
'Define o intervalo de páginas exibidas
Função final
Método de chamada: corpo (conteúdo da página coletada, tag inicial, tag final)
2. Use expressões regulares para obter os dados necessários
Copie o código do código da seguinte forma:
Corpo da função(wstr,start,over)
Definir xiaoqi = novo objeto de configuração Regexp'set
xiaoqi.IgnoreCase = True'Ignorar caso
xiaoqi.Global = True' definido para pesquisa de texto completo
xiaoqi.Pattern = &start&.+?&over&'expressão regular
Definir correspondências =xiaoqi.Execute(wstr)'Iniciar execução da configuração
definir xiaoqi = nada
corpo =
Para cada partida nas partidas
body=body&Match.Value 'Correspondência de loop
Próximo
Função final
Método de chamada: corpo (conteúdo da página coletada, tag inicial, tag final)
Ideias detalhadas para procedimentos de coleta:
1. Obtenha o endereço de cada página da lista paginada do site
Atualmente, a maioria dos sites dinâmicos possui regras para paginação de endereços, como:
página dinâmica
Primeira página: index.asp?page=1
Segunda página: index.asp?page=2
A terceira página: index.asp?page=3
.....
página estática
Primeira página: page_1.htm
Segunda página: page_2.htm
A terceira página: page_3.htm
.....
Para obter o endereço de cada página da lista de paginação do site, você só precisa usar variáveis para substituir os caracteres variáveis de cada endereço de página, como: page_<%=&page&%>.htm
2. Obtenha o conteúdo da página da lista paginada do site coletado
3. Extraia o endereço de conexão URL da página de conteúdo coletada do código da lista de paginação
A maioria dos links de páginas de conteúdo em páginas paginadas também possuem regras fixas, como:
<a href=url1>Conexão 1</a> <br>
<a href=url2>Conexão 2</a> <br>
<a href=url3>Conexão 3</a> <br>
Use o código a seguir para obter uma coleção de conexões de URL
Copie o código do código da seguinte forma:
Definir xiaoqi = Novo Regexp
xiaoqi.IgnoreCase = Verdadeiro
xiaoqi.Global = Verdadeiro
xiaoqi.Padrão = .+?
Definir correspondências =xiaoqi.Execute (conteúdo da lista de páginas)
definir xiaoqi = nada
url=
Para cada partida nas partidas
url=url&Match.Value
Próximo
4. Obtenha o conteúdo da página de conteúdo coletada e intercepte os dados a serem obtidos da página de conteúdo coletada de acordo com a marca de extração.
Por ser uma página gerada dinamicamente, a maioria das páginas de conteúdo possui as mesmas tags HTML. Podemos extrair as partes necessárias do conteúdo com base nessas tags regulares.
como:
Cada página tem um título de página <title>Título da página</title>. Você pode usar a função de interceptação MID que escrevi acima para obter o valor entre <title></title> ou pode usar expressões regulares para obtê-lo.
Exemplo: body(<title>Título da página</title>,<title>,</title>)