Ir para conteúdo
Fórum Script Brasil
  • 0

capturar url pagina e armazenar


Andre_2008

Pergunta

Bom mais uma duvida que tenho como estou começando desculpe pelas inumeras duvidas na verdade antes de postar eu procuro bastante tanto portugues como ingles.

Vou explicar de forma detalhada:

gostaria que o delphi fizesse o seguinte, consultasse uma pagina do google com uma pesquisa, feita a pesquisa o resultado são links com muitas paginas então..(essa parte eu já consegui só que mostrando em um webrowser e não é o que queria na verdade)

Queria que ele salvasse todas as urls da sequinte forma:

link resultado seria igual a esse http://www.humanmetrics.com/cgi-win/JTypes2.asp

queria que ele ignorasse o cgi-win/JTypes2.asp salvando apenas até o index.php seria isso http://www.humanmetrics.com/

os resultados queria que fossem aparecendo dentro de um campo, suponho que o mais adequado seriam o valuelisteditor que contem o campo "key" e o campo e "Value" o key mostraria os links e o value 2 valores "url salva" ou não "salva" e o resultado salvar em txt, seria possivel isso?

assim

url salvo

www.xxx.com salvo

www.xx2.com ignorado

Muito itens até sei montar com alguns erros, esse não tenho nem ideia de como fazer um geturl talvez não sei bem fiquei em duvida..

Quem puder ajudar agradeço!!

Editado por Andre_2008
Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0
Queria que ele salvasse todas as urls da sequinte forma:

link resultado seria igual a esse http://www.humanmetrics.com/cgi-win/JTypes2.asp

queria que ele ignorasse o cgi-win/JTypes2.asp salvando apenas até o index.php seria isso http://www.humanmetrics.com/

Andre_2008, veja que é simples.

Após você encontrar as duas barras separadoras do http e domínio, a próxima barra é aquela onde o conteúdo posterior é ignorado.

Voce pode fazer uso da função Pos para retornar a posição das duas barras na string. Despois, você usa PosEx para retornar a próxima barra, informando a partir de onde a substring deve ser pesquisada. (veja detalhes das funções no help)

Veja este exemplo didático:

var
  PosBarraDupla,
  PosBarraSimples :Integer;
  url,
  Fullurl :string;
begin
  Fullurl := 'http://www.humanmetrics.com/cgi-win/JTypes2.asp';
  PosBarraDupla := Pos('//', Fullurl);  // encontramos posição da primeira barra da dupla
  PosBarraSimples := PosEx('/', Fullurl, PosBarraDupla +2); // iniciamos pesquisa, pulamos a barra dupla
  url := Copy(Fullurl, 1, PosBarraSimples);
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Micheus, eu entendi a ideia mais não consegui colocar em pratica ainda por alguns aspectos..

Pedi para pesquisar "teste" por exemplo no google, ai ele me retorna esse resultado no navegador:

http://www.google.com.br/search?hl=pt-BR&a...vision&cd=1

Ai gostaria que ele pegasse todos os links do resultado exemplo:

#

Teste de QI - Teste de Einstein - Racha Cuca

Albert Einstein fez esse teste de qi no século passado, e afirmou que somente 2% da população mundial seria capaz de resolvê-lo.

Alexa Traffic Rank for http://rachacuca.com.br/teste-de-einstein/: 65.696rachacuca.com.br/teste-de-einstein/ - 34k - Em cache - Páginas Semelhantes

#

O Teste do Idiota

O Teste do Idiota. ... Se já respondeu a este teste anteriormente, pode ver os resultados acumulados até esse momento. ...

Alexa Traffic Rank for http://www.aspiadas.com/tests/tont.php: 391.339www.aspiadas.com/tests/tont.php - 29k - Em cache - Páginas Semelhantes

#

TESTE DE INTELIGÊNCIA

Este teste tem sido usado por mais de meio século, tendo sua fama reconhecida por sua grande confiabilidade. Se você não obtiver uma pontuação alta, ...

Alexa Traffic Rank for http://www.meusite.pro.br/ccivil/testintel.htm: 498.244www.meusite.pro.br/ccivil/testintel.htm - 29k - Em cache - Páginas Semelhantes

#

Teste de Sanidade

Se você está em dúvidas quanto a sua sanidade, aconselho a responder as 26 perguntas do teste a seguir. Lembramos que algumas são de alternativa e outras de ...

Alexa Traffic Rank for http://www.meusite.pro.br/ccivil/testsanidade.htm: 498.244www.meusite.pro.br/ccivil/testsanidade.htm - 49k - Em cache - Páginas Semelhantes

#

Teste psicológico das cores (Estado emocional, Avalição ...

O Teste das Cores é um instrumento de avaliação psicológica que consiste em obter informações momentaneas sobre a personalidade, mediante suas preferências ...

Alexa Traffic Rank for http://www.bne.com.br/cores/default.asp: 101.769www.bne.com.br/cores/default.asp - 3k - Em cache - Páginas Semelhantes

#

Teste Vocacional

Este é o teste vocacional mais utilizado hoje no mundo inteiro! ... Este teste foi adaptado de fontes disponíveis e publicado neste site (1999) sem ...

Alexa Traffic Rank for http://www.carlosmartins.com.br/testevocacional.htm: 141.029www.carlosmartins.com.br/testevocacional.htm - 27k - Em cache - Páginas Semelhantes

Ai o programa vai nas urls ou salvas as urls com a dica que você mencionou, eu tenho a variavel da pesquisa chamada "resultado" que poderia chamar ela, mais o programa entenderia que seria para salvar o resultado da pesquisa e não os links conseguidos pela pesquisa...

Pela sua dica entendi como ignorar a sintaxe depois da 2 "/" do dominio...

O processo seria:

No caso teria um capo abaixo como o valuelisteditor que me mostraria os links se foram capturados ou não...

O resultado(os links da pesquisa que pedi) exportar em txt..

Ficou mais facil de entender o projeto?Apesar de sua ajudar ter ajudado muito pois as funções do delphi não sei bem o fazem são muitas tirando o help do delphi teriam outro local para saber o que cada uma faz?

Muito obrigado pela resposta!

André

Editado por Andre_2008
Link para o comentário
Compartilhar em outros sites

  • 0
Andre_2008, esse resultado é retornado para você em uma string? em uma TStringList?

String (var resultado: string;)normal esta em um webrowser(WebBrowser1.Navigate(resultado);) ai aparece a real tela do google com o resultado como um navegador, não tenho necessidade disso queria apenas o links por isso disse do valuelisteditor pois acho que ele será possivel fazer isso

queria assim o valuelisteditor

link capturado

www.xxx.com ok

www.xxx2.com ignorado

www.xxx3.com ok

Deu para imaginar +- Micheus?

Editado por Andre_2008
Link para o comentário
Compartilhar em outros sites

  • 0
String (var resultado: string;)normal esta em um webrowser(WebBrowser1.Navigate(resultado);)
Nunca usei o WebBrowser, por isto a pergunta.

De qualquer forma, você pode seguir a mesma idéia que passei antes - usando PosEx, voce pode buscar dentro da "grande" string, as substrings que você precisa.

Na situação posta, você usa o PosEx para encontra os "http://" e o offset na função vai sendo incrementado de modo a procurar a próxima ocorrência, sem que fique no mesmo lugar. Veja:

WebBrowser1.Navigate(resultado);
PosHttp := PosEx('http://', resultado, 1);
while PosHttp > 0 do
begin
  Delete(resultado, 1, PosHttp -1);  // apagamos o que está antes do que interessa
  PosHttp := PosEx('/', resultado, 8));  // procuramos pela "/" após o "http://" (7 caracteres)
  URL := Copy(resultado, 1, PosHttp); // copiamos o endereço até a "/"
 // aqui você insere esta URL no componente de lista que quiser
  PosHttp := PosEx('http://', resultado, PosHttp);  // a partir da última posição, busca o próximo http://
end;

Veja que apenas usei o que há havia lhe passado. Mais que isto, vou fazer a rotina para você e não vai aprender. ;)

Abraços

Motivo da edição: Retirada da variável OffSet e sua substituição por PosHttp na função PosEx.

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0

pow cara nem sei como agradecer vou ver e alem disso vou estudar a rotina para enteder como fez para chegar no resultado.

Estou aprendendo a programar agora e tenho diversos conteudos livros de delphi apostilas tudo estou tentando consumir o maximo possivel, algumas variaveis ainda são novas para mim mais agradeço demais a sua ajuda pois esta sendo muito util realmente!!

Link para o comentário
Compartilhar em outros sites

  • 0

depois que coloquei o codigo declarei na uses a função StrUtils para PosEx mais o programa agora trava e não dá resposta nenhuma quando tento fecha-lo diz que esta fazendo "Debug", deixei uns 10 minutos e nada o delphi não trava trava o .exe do projeto..

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, ExtCtrls, Grids, ValEdit, StrUtils;

type
  TForm1 = class(TForm)
    WebBrowser1: TWebBrowser;
    Panel2: TPanel;
    Panel1: TPanel;
    Button1: TButton;
    ComboBox1: TComboBox;
    ComboBox2: TComboBox;
    ComboBox3: TComboBox;
    Label1: TLabel;
    Pais: TLabel;
    Buscador: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
Var google_br, a, b, c, Altavista_br, yahoo, resultado,
brasil, url : string;
PosHttp, OffSet : integer;
begin
   resultado := resultado;
   google_br := 'http://www.google.com.br/search?hl=pt-BR&q=';
   Altavista_br := 'http://br.altavista.com/web/results?itag=ody&q=';
   brasil := 'http://www.google.com.br/search?hl=pt-BR&q=';
   yahoo := 'http://br.search.yahoo.com/search?p=';
   a := 'delphi';
   b := 'teste';
   c := 'delphphp';
   if (ComboBox1.Items.Strings[ComboBox1.Itemindex]= '') and
      (ComboBox2.Items.Strings[ComboBox2.Itemindex] = '')and
      (ComboBox3.Items.Strings[ComboBox3.Itemindex] = '')then
      begin
   showmessage('Você precisa selecionar as 3 opções!' )
   end;
   if (ComboBox1.Items.Strings[ComboBox1.Itemindex] = 'a') and  //opções cambobox
      (ComboBox2.Items.Strings[ComboBox2.Itemindex] = 'google')and
      (ComboBox3.Items.Strings[ComboBox3.Itemindex] = 'Brasil')then
      begin
   resultado := google_br + a;
   end;
     if (ComboBox1.Items.Strings[ComboBox1.Itemindex] = 'a') and
      (ComboBox2.Items.Strings[ComboBox2.Itemindex] = 'Altavista') and
      (ComboBox3.Items.Strings[ComboBox3.Itemindex] = 'Brasil') then
      begin
   resultado := Altavista_br + a;
   end;
   if (ComboBox1.Items.Strings[ComboBox1.Itemindex] = 'a') and
      (ComboBox2.Items.Strings[ComboBox2.Itemindex] = 'Yahoo')
      (ComboBox3.Items.Strings[ComboBox3.Itemindex] = 'Brasil') then
      begin
   resultado := Yahoo + a;
   end;
      caption := resultado;
      OffSet := 1;  // começamos do início do resultado
PosHttp := PosEx('http://', resultado, OffSet);
while PosHttp > 0 do
begin
  Delete(resultado, 1, PosHttp -1);  // apagamos o que está antes do que interessa
  PosHttp := PosEx('/', resultado, 8);  // procuramos pela "/" após o "http://" (7 caracteres)
  URL := Copy(resultado, 1, PosHttp); // copiamos o endereço até a "/"
  ListBox1.Items.Add(URL); // aqui você insere esta URL no componente de lista que quiser
  PosHttp := PosEx('http://', resultado, OffSet);  // a partir da última posição, busca o próximo http://
end;
end;



procedure TForm1.Button3Click(Sender: TObject);
begin
     end;

procedure TForm1.FormCreate(Sender: TObject);
begin
// adiciona itens ao ComboBox
  ComboBox1.Items.Add('a');
  ComboBox1.Items.Add('b');
  ComboBox1.Items.Add('C');
  ComboBox2.Items.Add('google');
  ComboBox2.Items.Add('Altavista');
  ComboBox2.Items.Add('Yahoo');
  ComboBox3.Items.Add('Brasil');
end;

end.

Desculpe tantas perguntas e questoes mais não sei mais o que fazer, nem resultado no listbox e agora trava meu projeto...

Editado por Andre_2008
Link para o comentário
Compartilhar em outros sites

  • 0

Andre_2008, foi um erro "gritante" meu.

É que comecei com uma idéia e no final estava pensando em outra coisa mais "simples". Já fiz a correção no meu post anterior para prejudicar a outros.

O fato do travamento, é culpa de eu ter mantido a variável OffSet no procedimento. Na verdade, com a configuração que lhe passei, ela não é necessária. No lugar dela, usa-se o PosHttp que estará sempre ao final da string copiada, de onde deve ser o ponto de partida para a próxima pesquisa.

PosHttp := PosEx('http://', resultado, 1);
while PosHttp > 0 do
begin
  Delete(resultado, 1, PosHttp -1);  // apagamos o que está antes do que interessa
  PosHttp := PosEx('/', resultado, 8));  // procuramos pela "/" após o "http://" (7 caracteres)
  URL := Copy(resultado, 1, PosHttp); // copiamos o endereço até a "/"
// aqui você insere esta URL no componente de lista que quiser
  PosHttp := PosEx('http://', resultado, PosHttp);  // a partir da última posição, busca o próximo http://
end;

Uma última observação, sobre o exemplo que passei: ao final do procedimento a variável resultado estará praticamente limpa, pois a medida que vamos achando endereços, vamos excluindo a parte processada (usando a função Delete). Se insto não for conveniente, então teremos mesmo que pensar no uso da variável OffSet, na forma como eu tinha pensado inicialmente (mas acabei mudando de idéia).

Abraços

Editado por Micheus
Link para o comentário
Compartilhar em outros sites

  • 0

Muito obrigado Micheus, pensei que eu tivesse feito algo errado, na verdade tinha ate tentado não postar aqui para não encher você.

Também estou insistindo em aprender porque só se aprender a programar programando, junto com estudo que já venho fazendo.

A ajuda esta sendo muito importante, sob o resultado vou ver se consigo fazer (Url + 1) - (no caso foi a função que você já fez offset := 1) algo assim no listbox para ele não limpar e sim somar um com outro...

Chegando em casa vou testar o codigo!!

Valeu pela ajuda!!

Editado por Andre_2008
Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...