2017-06-27 1 views
2

Ich möchte innerText eines P html Elements für alle URLs retrieve ich habe in einer Textdatei aufgeführt. Ich bin eher Neuling dafür, aber ich dachte, ich kann es lösen. Atm. Ich habe ausgefallen ist, wie ich, wie nicht verarbeiten kann ich jedes Array-Elemente für die Schleife korrekt passieren soll.Invoke-WebRequest: Der Parameter 'Uri' kann nicht gebunden werden. Kann nicht konvertieren "@ {

$theURLS = Import-CSV linkek_alatt.txt 
$item = New-Object System.Collections.ArrayList 
for ($i=0; $i -le $theURLS.length;$i++) 
{ 
foreach($item in $theURLS) 
{ 
$Site = Invoke-WebRequest -URI $item 
$Igotit = $Site.AllElements | Where-Object {$_.tagName -eq "P"} | 
Select -First 1 -Skip 3 -ExpandProperty innerText 
$Igotit 
} 
} 
> FilteredContent.txt 

die gefilterte Datei, die die Informationen enthalten, müssen

Vorerst erhalte ich eine „Invoke-WebRequest: Der Parameter 'Uri' kann nicht gebunden werden. Der "@ {" Fehler kann nicht konvertiert werden und ich sehe wiederholte erste URL und eine zufällige - die für den nächsten Schritt - eine in der Fehlermeldung. Irgendwelche Ideen willkommen. Mit freundlichen Grüßen, Geza

+1

Textdatei oder CSV-Datei? Wenn Sie eine Textdatei verwenden, benutzen Sie 'Import-Csv' nicht, verwenden Sie' Get-Content'. – arco444

+0

Warum durchlaufen Sie Ihre URL-Liste innerhalb einer Iteration durch Ihre URL-Liste? –

+0

CSV. Geldautomat. Ich arbeite daran ein bisschen mehr. Dies funktioniert für eine bestimmte URL: Clear-Host $ Site = Invoke-WebRequest -URI "https: //www.somepage/anotherone/" $ Igotit = $ Site.AllElements | Where-Objekt {$ _. Tagname -eq "P"} | Wählen Sie -First 1 -Skip 3 -ExpandProperty innerText $ Igotit –

Antwort

0

Per Kommentare, tritt das Problem, weil Sie Import-CSV hier verwenden:

$theURLS = Import-CSV linkek_alatt.txt 

Diese Versuche unter Verwendung der ersten Textzeile in der Datei als Header ein Powershell-Objekt zu erstellen .

Wenn Ihre TXT-Datei nicht eine CSV-Datei ist und Sie möchten ein Array von Strings zurückzukehren, verwenden Sie stattdessen Get-Content:

$theURLS = Get-Content linkek_alatt.txt 

Wenn Ihre Datei eine CSV-Datei ist, dann werden Sie brauchen, um Verweisen Sie auf den Eigenschaftsnamen, der dem Header der URLs entspricht, wenn Sie ihn in Invoke-WebRequest verwenden. ZB wenn es einen Header von "URL" hätte:

Invoke-WebRequest -URI $item.URL 

Aber ich vermute, das ist nicht der Fall für Sie.

+0

Dank Mark, verpasste ich den Header und diese .URL-Erweiterung auch. Wie gesagt, ich bin eher Neuling :). Es ist eine CSV-Datei, die URLs werden durch die getrennt; Schild. –

Verwandte Themen