0

わかりましたので、正規表現を使用して Google ホームページからすべてのリンクを抽出しようとしています。

しかし、私は不可解な問題に直面しています。Google ホームページにリクエストを送信し、ページからすべてのリンクを抽出しようとすると、通常 1 つの結果が得られ、残りはゴミです。ただし、ページのソースを手動で表示し、リンクを抽出してパターンに対してテストすると、機能します。

ここで何が問題なのかわかりません。パターンに欠陥があると思います。正しくしようと懸命に努力しているか、Google がコードとブラウザに異なる応答を送信している可能性があります。この問題について洞察を得ることができれば、本当に感謝しています。

私のパターン

string pattern = @"=("")?(https?:\/\/)?[\w.-]+\.[\w]*([/]?[\w]*)*("")?";

私の表示コード

Match match = Regex.Match(source, pattern);
        if (match.Success)
        {
            foreach (var res in match.Groups)
            {
                Console.WriteLine(res);
            }
            Console.ReadKey();
        }
4

3 に答える 3

3

HTML を regex で解析しようとしないでください。代わりに、Html Agility Packなどの HTML パーサーを使用してください。これは、指定されたWebページからすべてのリンクhrefを取得します(サンプルページから)

HtmlWeb hw = new HtmlWeb();
HtmlDocument doc = hw.Load(myURL);
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href]"))
{
}
于 2013-08-06T21:58:01.767 に答える
-1

わかりました私は問題を理解したと思います。Regex.Match1 つの回答のみRegex.Matchesを返します

于 2013-08-06T22:00:38.157 に答える