Deseja usar ASP para criar seu programa de coleta de ladrões favorito. Depois de ler o artigo a seguir, você mesmo pode criá-lo. princípio
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: instabilidade, se o site alvo 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, o; a velocidade é tão rápida quanto a leitura de dados no servidor local. É definitivamente mais lenta que isso.
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.vevb.com
URL escuro, HTML
Url=http://www.vevb.com;
HTML = getHTTPage(Url)
Resposta.write HTML
%>
2. Várias funções comumente usadas
(1) Função InStr
descrever
Retorna a posição onde um determinado caractere (string2) aparece pela primeira vez em outra string (string1).
gramática
InStr(string1, string2)
Por exemplo:
Escurecer SearchString, SearchChar
SearchString =http://www.vevb.com ' A string a ser pesquisada.
SearchChar = jb51 'Procura por jb51.
MyBK = Instr(SearchString, SearchChar) 'Retorna 8
'Retorna 0 se não for encontrado, por exemplo:
PesquisaChar = BK
MyBK = Instr(SearchString, SearchChar) 'Retorna 0
(2) Função intermediária
descrever
Retorna o número especificado de caracteres de uma string.
gramática
Mid(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 do MyBK passa a ser www.google
(3) Substituir função
Escurecer SearchString, SearchChar
SearchString = Nosso BK Design é uma string de recurso de construção de site para ser pesquisada.
SearchString = Substituir (SearchString, design BK, WWW.google)
'Neste momento, o valor de SearchString se torna nosso Www.google é um site de recursos para construção de sites
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>(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,over-start) 'A função aqui é extrair a string entre o caractere inicial e o caractere final em StrBK. Também falei sobre a função mid na seção anterior; over-start é calcular a distância entre a posição inicial e a posição final, que é 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ê obtém é:
<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 número da posição de <td id=Content> em StrBK. Agora podemos adicionar 17 após a instrução do programa, então o programa apontará para a posição do caractere após. <td id=Conteúdo>.
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 remover todas as conexões em uma determinada string. As conexões podem incluir muitos tipos e substituir só pode substituir um deles. Outra função de substituição correspondente para substituí-lo?
Mas você pode usar expressões regulares para fazer esse trabalho. Não vou entrar em detalhes aqui.
(1) Como processar a mudança de página do site da outra parte para o nosso?
A resposta é: use a função de substituição e a passagem de parâmetros da página.
Por exemplo, a página da outra parte contém o seguinte código de virada de página: <a href=2.htm>Próxima página</a> Podemos primeiro usar o conteúdo mencionado acima para obter esta string e, em seguida, usar a função de substituição: RsBK=. substituir(RsBK,<a href=,<a href=page.asp?Url=)
Em seguida, obtenha o valor do parâmetro Url no programa page.asp e, finalmente, use a tecnologia de coleta para obter o conteúdo desejado na próxima página.
(2) Como armazenar o conteúdo obtido no banco de dados
Devido ao espaço limitado, vou mencioná-lo brevemente aqui.
Na verdade, é muito simples:
Processe o conteúdo roubado para evitar erros de injeção de SQL ao gravar no banco de dados, por exemplo: replace(String,','')
Em seguida, execute um comando sql para inserir no banco de dados e tudo ficará bem ~
Os itens acima são apenas alguns aplicativos básicos do componente XMLHTTP. Na verdade, ele também pode implementar muitas funções, como salvar imagens remotas no servidor local e usar o componente adodb.stream para salvar os dados adquiridos no banco de dados. A coleção tem uma ampla gama de funções e usos.