Pesquisa de texto em páginas da Web com uma lista de URLs

0

Eu tenho uma lista de vários milhares de URLs e gostaria de pesquisar cada uma dessas páginas para uma determinada palavra. Como posso fazer isso programaticamente no Windows, preferencialmente usando VBScript ou Powershell?

    
por Mark Richman 12.07.2011 / 18:05

2 respostas

1

Edit: A pergunta original não especificou VBScript & Powershell Estou deixando esta sugestão do Python na esperança de que alguém no futuro seja beneficiado.

Qual é a maneira mais rápida de fazer isso programaticamente no Windows? Eu acho que 'mais rápido' é uma função de suas habilidades.

Com minhas habilidades, eu prepararia um script python para isso, já que seria o caminho mais rápido para mim. O roteiro, como eu escreveria, seria parecido com

search_string = ""                 #String you're search for
sites_with_str = {}                #List that'll contain URLs with search_string in them
file = fopen("c:\sites.txt", "r")
for site in file:
  html = wget(site)
  if html.contains(search_string):
     sites_with_str.add(site)
file.fclose()                      #it's just polite to close your read handles


#Print out the sites with the search string in them
print "\n\nSites Containing Search String \""+search_string+"\":"
for each in sites_with_str:
  print each

Claro, esse é um tipo de pseudo-Python. Você terá que encontrar uma biblioteca que vai pegar um site para você. E, obviamente, isso exigiria uma pequena função recursiva e alguma análise de string se você quisesse pesquisar todas as páginas dentro de cada site referenciado no arquivo de entrada.

    
por 12.07.2011 / 18:23
0

Eu resolvi meu próprio problema, no caso de alguém mais enfrentar o mesmo requisito:

$webClient = new-object System.Net.WebClient
$webClient.Headers.Add("user-agent", "PowerShell Script")

$info = get-content c:\path\to\file\urls.txt

foreach ($i in $info) {
  $output = ""

  $startTime = get-date
  $output = $webClient.DownloadString($i)
  $endTime = get-date

  if ($output -like "*some dirty word*") {
    "Success't't" + $i + "'t't" + ($endTime - $startTime).TotalSeconds + " seconds"
  } 

}
    
por 12.07.2011 / 19:03