Html Agility Packを使ってimg / srcや/ hrefsを取得する方法は?

.net c# html html-agility-pack html-parsing

質問

私はHTMLの敏捷性パックを使用してHTMLページから画像とhrefリンクを解析したいが、XMLやXPathについてはあまりよく分かっていない。多くのWebサイトでヘルプ文書を検索しているにもかかわらず、また、私はVisualStudio 2005でC#を使用しています。私は英語を流暢に話すことができないので、役に立つコードを書くことができて心から感謝します。

受け入れられた回答

ホームページの最初の例では、非常によく似たことがありますが、

 HtmlDocument doc = new HtmlDocument();
 doc.Load("file.htm"); // would need doc.LoadHtml(htmlSource) if it is not a file
 foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//a[@href"])
 {
    string href = link["href"].Value;
    // store href somewhere
 }

だから、のimg @のSRCのために、単にそれぞれ置き換えることを想像することができaしてimg 、およびhrefsrc 。次のように単純化することさえできます。

 foreach(HtmlNode node in doc.DocumentElement
              .SelectNodes("//a/@href | //img/@src")
 {
    list.Add(node.Value);
 }

相対URL処理については、 Uriクラスを参照してください。


人気のある回答

例と受け入れられた答えは間違っています。最新のバージョンではコンパイルされません。私は別のものを試してみる:

    private List<string> ParseLinks(string html)
    {
        var doc = new HtmlDocument(); 
        doc.LoadHtml(html);
        var nodes = doc.DocumentNode.SelectNodes("//a[@href]");
        return nodes == null ? new List<string>() : nodes.ToList().ConvertAll(
               r => r.Attributes.ToList().ConvertAll(
               i => i.Value)).SelectMany(j => j).ToList();
    }

これは私のために働く。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ