Na verdade, o programa de coleta chama páginas da web em outros sites por meio do componente XMLHTTP em XML. Por exemplo, muitos dos programas de coleta de notícias acessam as páginas de notícias do Sina, e parte do HTML delas é substituída e os anúncios também são filtrados. As vantagens de utilizar um programa de coleta são: não há necessidade de manutenção do site, pois os dados do programa de coleta vêm de outros sites, e serão atualizados à medida que o site for atualizado, podendo economizar recursos do servidor; O programa de coleta possui apenas alguns arquivos e todo o conteúdo da web é de outros sites. As desvantagens são:
Instável, se o site de destino der errado, o programa também dará errado, e se o site de destino for atualizado e mantido, o programa de coleta também precisará ser modificado de acordo com a velocidade, por se tratar de uma chamada remota, a velocidade é mais lenta; do que ler dados no servidor local Definitivamente mais lento.
1. Casos
A seguir está uma breve explicação da aplicação de XMLHTTP em ASP.
Copie o código do código da seguinte forma:
<%
'Funções comumente usadas
'1. Insira o endereço da página da web de destino do URL e o valor de retorno getHTTPPage é o código HTML da página da web de destino.
função getHTTPage(url)
dimHttp
definir Http=server.createobject(MSXML2.XMLHTTP)
Http.open GET,url,falso
http.send()
se Http.readystate<>4 então
função de saída
terminar se
getHTTPPage=bytesToBstr(Http.responseBody,GB2312)
definir http = nada
se err.número<>0 então err.Clear
função final
'2. Converta Ranma. Use xmlhttp diretamente para chamar páginas da web com caracteres chineses. Você pode convertê-lo por meio do componente adodb.stream.
Função BytesToBstr(corpo)
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 = GB2312 'Converter a codificação UTF-8 padrão original para a codificação GB2312 Caso contrário, usar diretamente o componente XMLHTTP para chamar uma página da web com caracteres chineses resultará em código ilegível.
BytesToBstr = objstream.ReadText
objstream.Fechar
definir objstream = nada
Função final
'Tente chamar o conteúdo html de http://www.google abaixo
URL escuro, HTML
URL=http://www.google;
HTML = getHTTPage(Url)
Resposta.write HTML
%>
2. Várias funções comumente usadas
Função InStr
Descrição Retorna a posição onde um determinado caractere (string2) aparece pela primeira vez em outra string (string1).
SintaxeInStr(string1, string2)
Por exemplo:
Escurecer SearchString, SearchChar
SearchString =http://www.google ' A string a ser pesquisada.
SearchChar = blue1000 'Procura por blue1000.
MyBK = Instr(SearchString, SearchChar) 'Retorna 8
'Retorna 0 se não for encontrado, por exemplo:
PesquisaChar = BK
MyBK = Instr(SearchString, SearchChar) 'Retorna 0
Função intermediária
Descrição: Retorna o número especificado de caracteres de uma string.
SyntaxMid(string, início, fim)
Por exemplo:
Dim MyBK
MyBK = Mid (nosso design BK (www.google), 7, 12) 'Intercepte a string 12 caracteres após o 7º caractere de nosso design BK (www.google)' Neste momento, o valor de MyBK se torna www.google
Substituir função
Escurecer SearchString, SearchChar
SearchString = Nosso BK Design é uma string de recurso de construção de site para ser pesquisada.
SearchString =Replace(SearchString, BK design, Www.google)'Neste momento, o valor de SearchString se torna nosso Www.google é um site de recursos de construção de site
3. Intercepte o código HTML da área especificada
Por exemplo, desejo apenas obter a parte do texto entre <td> e </td> no seguinte código HTML:
<html>
<title>BK (www.google) mecanismo de pesquisa Google</title>
<corpo>
<tabela>
<tr><td></td></tr>
<tr><td id=Content>BK (www.google) O mecanismo de pesquisa Google é um site com muitos recursos...</td></tr>
</tabela>
</body>
</html>
<%
…
Dim StrBK, iniciar, terminar, RsBK
StrBK=getHTTPPage (o endereço da página da web)
start=Instr(StrBK,<td id=Content>) 'A função aqui é obter a posição do início da string. Alguém vai perguntar aqui: o código original é <td id=Content>, por que você está chamando <td id=Content> aqui? Resposta: em asp (para ser mais preciso, é representado por duas aspas duplas em VBscript). aspas, porque aspas duplas são um caractere sensível para o programa.) over=Instr(StrBK,…</td></tr>)'A função aqui é obter a posição do final da string. 'Alguém vai perguntar novamente aqui:(: Por que há três pontos extras na frente do código HTML que o programa chama...? Resposta: Dica: Há também um </td></tr> no texto acima linha, se você usar </td></ tr> para localizar, o programa considerará erroneamente </td></tr> na linha acima como o final da string a ser obtida RsBK=mid(StrBK,start, recomeçar). 'A função aqui é extrair a string entre o caractere inicial e o caractere final em StrBK. Também falei sobre a função intermediária na seção anterior para calcular a distância entre a posição inicial e a distância final. , ou seja, o número de caracteres.
response.write(RsBK) 'Finalmente produz o conteúdo obtido pelo programa
%>
Não fique muito feliz. Ao executá-lo, você descobrirá que há um erro no código HTML da página. Porque o código html que você obteve é: <td id=Content>BK (www.google) O mecanismo de busca Google é um site com muitos recursos...
Você viu isso? Há código HTML incompleto! O que fazer? A instrução start=Instr(StrBK,<td id=Content>) obtém o conteúdo de <td id=Content> em
O número da posição em StrBK, agora podemos adicionar 17 após a instrução do programa, então o programa apontará a posição para o caractere após <td id=Content>.
Ok, o programa mudará para isto:
<%
…
Dim StrBK, iniciar, terminar, RsBK
StrBK=getHTTPPage (o endereço da página da web)
start=Instr(StrBK,<td id=Conteúdo>) + 17
over=Instr(StrBK,…</td></tr>) 'Aqui você também pode subtrair sete (-7) para remover 3 pontos
RsBK=mid(StrBK,início,reinicialização)
resposta.write(RsBK)
%>
Tudo bem, podemos roubar o que quisermos e exibir em nossa própria página, haha ~
4. Exclua ou modifique os caracteres obtidos
Substitua BK(www.google) em RsBK por BK:
RsBK=substituir(RsBK,BK(www.google),BK)
Ou exclua (www.google) diretamente:
RsBK=substituir(RsBK,(www.google),)
Ok, agora RsBK se torna: BK O mecanismo de busca do Google é um site com muitos recursos... Mas, na verdade, a função de substituição pode não ser adequada para algumas situações. Por exemplo, queremos substituir todas as conexões em uma determinada string. As conexões podem incluir muitos tipos e substituir só pode substituir um deles específico. Não podemos substituí-lo por uma função de substituição correspondente, certo?