给定 URL 列表,在网页中搜索文本

给定 URL 列表,在网页中搜索文本

我有一份包含数千个 URL 的列表,我想在每个页面中搜索给定的单词。如何在 Windows 上以编程方式执行此操作,最好使用 VBScript 或 Powershell?

答案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。您必须找到一个可以为您抓取站点的库。如果您想搜索输入文件中引用的每个站点内的所有页面,显然需要一些递归函数和一些字符串解析。

答案2

我解决了自己的问题,以防其他人遇到同样的要求:

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

}

相关内容