Cari teks di halaman web yang diberi daftar URL

0

Saya memiliki daftar beberapa ribu URL, dan saya ingin mencari setiap halaman untuk kata tertentu. Bagaimana saya bisa melakukan ini secara terprogram pada Windows, lebih disukai menggunakan VBScript atau Powershell?

Mark Richman
sumber

Jawaban:

1

Sunting: Pertanyaan asli tidak menentukan VBScript & Powershell. Saya meninggalkan saran Python ini dengan harapan bahwa seseorang di masa depan akan mendapat manfaat.

Apa cara tercepat untuk melakukan ini secara terprogram pada Windows? Saya kira 'tercepat' adalah fungsi dari kemampuan Anda.

Dengan keahlian saya, saya akan membuat skrip python untuk itu, karena itu akan menjadi cara tercepat bagi saya. Script, seperti yang saya tulis, akan terlihat seperti

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

Tentu saja, itu semacam Pseudo-Python. Anda harus menemukan perpustakaan yang akan mengambil situs untuk Anda. Dan jelas itu membutuhkan sedikit fungsi rekursif dan beberapa penguraian string jika Anda ingin mencari semua halaman dalam setiap situs yang direferensikan dalam file input.

James T Snell
sumber
Terima kasih untuk sarannya. Saya telah memperbarui pertanyaan saya untuk menunjukkan VBScript atau Powershell.
Mark Richman
@Mark - cries
James T Snell
Ya, saya juga menangis, tidak memiliki akses ke OS nyata ;)
Mark Richman
@Mark dan Anda dipaksa untuk tidak menggunakan Python ?? Sungguh situasi yang menyedihkan Sobat: P
James T Snell
0

Saya memecahkan masalah saya sendiri, kalau-kalau ada orang lain yang menghadapi persyaratan yang sama:

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

}
Mark Richman
sumber