-1


1) txt ファイルからすべてのリンクを取得する

http://example1.htm
http://example2.htm
http://example3.htm
...

2) 各リンクからソースを
取得する 3) ソースから文字列を取得する
4) 文字列を csv にエクスポートする

1つのリンクで動作します。例:

$topic1 = "kh_header.><b>((?<=)[^<]+(?=</b>))"
$topic2 = "<b>Numer ogłoszenia:\s([^;]+(?=;))"
 Select-String -Path strona1.htm -pattern $topic1 | foreach-object {
 $_.line -match $topic1 > $nul
 $out1 = $matches[1]
 }
 Select-String -Path strona1.htm -pattern $topic2 | foreach-object {
 $_.line -match $topic2 > $nul
 $out2 = $matches[1]
 }
echo $out1';'$out2';' | Set-content out.csv -force

、しかし、txtファイルに多くのリンクがあると取得できません。やってみる:

$topic = "kh_header.><b>((?<=)[^<]+(?=</b>))"
$topic2 = "<b>Numer ogłoszenia:\s([^;]+(?=;))"
 $folder = Get-ChildItem e:\sk\html
  ForEach ($htmfile in $folder){
   If ($_.extension -eq ".htm"){
    $htmfile = ForEach-Object  {
            $WC = New-Object net.webclient
            $HTMLCode = $WC.Downloadstring($_.fullname)
            }
       Select-String -Path $HTMLCode -pattern $topic | foreach-object {
       $_.line -match $topic > $nul
       $out1 = $matches[1]
       }    
       Select-String -Path $HTMLCode -pattern $topic2 | foreach-object {
       $_.line -match $topic2 > $nul
       $out2 = $matches[1]
       }      
       echo $out1';'$out2';' | Set-content out.csv -force     
    }
}

どうすれば入手できますか?

4

1 に答える 1

1

デフォルトで使用Select-Stringすると、特定の行で最初に一致したものだけが検索されます。AllMatchesパラメータを使用してそれを修正できます。

foo.txt contains: "static void Main(string[] args)"

Select-String foo.txt -pattern '\W([sS]..)' -AllMatches | 
    Foreach {$_.Matches} |
    Foreach {$_.Groups[1].Value}

また、Select-String は行指向であるため、複数行にわたるパターン マッチは検出されません。それらを見つけるには、ファイルを文字列文字列として読み込む必要があります。

$text = [io.file]::readalltext("$pwd\foo.txt")

次に、いくつかの特別な正規表現ディレクティブを使用します。

$text | Select-String -pattern '(?si)\W([sS]..)' -AllMatches |
        Foreach {$_.Matches} |
        Foreach {$_.Groups[1].Value}
于 2012-12-15T19:55:19.050 に答える