У меня есть список из нескольких тысяч URL-адресов, и я хотел бы найти на каждой из этих страниц определенное слово. Как я могу сделать это программно в Windows, предпочтительно с помощью VBScript или Powershell?

2 ответа2

1

Изменить: оригинальный вопрос не указывал VBScript и Powershell. Я оставляю это предложение Python в надежде, что кто-то в будущем выиграет.

Какой самый быстрый способ сделать это программно в Windows? Я полагаю, что «самый быстрый» - это функция ваших способностей.

С моими навыками я бы подготовил для этого скрипт на Python, так как это был бы самый быстрый путь для меня. Сценарий, как я бы его написал, выглядит примерно так

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

Конечно, это своего рода псевдо-Python. Вам нужно найти библиотеку, которая захватит сайт для вас. И очевидно, что для поиска всех страниц на каждом сайте, на который есть ссылка во входном файле, потребуется небольшая рекурсивная функция и некоторый разбор строк.

0

Я решил свою проблему, если кто-то еще столкнется с таким же требованием:

$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"
  } 

}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .