我有一份包含数千个 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"
}
}