2012-11-17 15 views
5

私はC#を初めて使用しています。特定のパターンを持つウェブページから写真のURLを抽出したいと思います。たとえば、次のパターンname_412s.jpgを持つすべての画像を抽出したいとします。私はHTMLから画像を抽出するために次のコードを使用しますが、それをどのように適応させるかはわかりません。htmlアジリティパックを使用してc#でHTMLからイメージURLを抽出し、xmlファイルに書き込む

public void Images() 
    { 
     WebClient x = new WebClient(); 
     string source = x.DownloadString(@"http://www.google.com"); 

     HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
     document.Load(source); 

     foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img") 
     { 
      images[] = link["src"]; 
     } 
} 

また結果をxmlファイルに書き込む必要があります。あなたもそれで私を助けることができますか?

ありがとうございました!

答えて

3

クエリ結果を制限するには、XPathに条件を追加する必要があります。たとえば、//img[contains(@src, 'name_412s.jpg')]は、そのファイル名を含むsrc属性を持つ要素だけを結果として返します。img

結果をXMLに書き出す限り、新しいXML文書を作成して、それに一致する要素をコピーする必要があります。 HtmlAgilityPackノードをXmlDocumentに直接インポートすることはできないため、すべての属性を手動でコピーする必要があります。例えば:

using System.Net; 
using System.Xml; 

// ... 

public void Images() 
{ 
    WebClient x = new WebClient(); 
    string source = x.DownloadString(@"http://www.google.com"); 
    HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
    document.Load(source); 
    XmlDocument output = new XmlDocument(); 
    XmlElement imgElements = output.CreateElement("ImgElements"); 
    output.AppendChild(imgElements); 
    foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img[contains(@src, '_412s.jpg')]") 
    { 
     XmlElement img = output.CreateElement(link.Name); 
     foreach(HtmlAttribute a in link.Attributes) 
     { 
      img.SetAttribute(a.Name, a.Value) 
     } 
     imgElements.AppendChild(img); 
    } 
    output.Save(@"C:\test.xml"); 
} 
+0

まあ、後、私は、XMLリストおよび表示を読むことができる、私は自分の名前で_412s.jpgを持っているページ上のすべての画像を指定する必要があり、私はXMLでそれらを追加したいので、リンク。私は1つだけでなく、すべての要素を抽出したい。その名前には_412s.jpgという数百の画像があります。どうやってやるの? xmlファイルを読み込むときに写真を表示できるようにxmlを書き込むのに最適な方法は何ですか? –

+1

@CristinaUrsu私の更新された答えを見て、うまくいけばあなたの質問に答えます。 –

+0

Windows 8のコードをどのように適応させるか知っていますか?私はfizzler htmlの敏捷性パックについて読んだが、私はそれを理解することはできない。 WebClient x = new WebClient()を認識しません。またはXmlDocumentの出力=新しいXmlDocument();またはout.Save(@ "C:\ test.xml");となります。手伝って頂けますか? –