2010-01-21 8 views
16

मैंने अभी HTMLAgilityPack डाउनलोड किया है और दस्तावेज़ में कोई उदाहरण नहीं है।वेबसाइट से सभी छवियों को पुनर्प्राप्त करने के लिए मैं HTML Agility Pack का उपयोग कैसे कर सकता हूं?

मैं किसी वेबसाइट से सभी छवियों को डाउनलोड करने का तरीका ढूंढ रहा हूं। पता स्ट्रिंग, भौतिक छवि नहीं।

<img src="blabalbalbal.jpeg" /> 

मुझे प्रत्येक आईएमजी टैग के स्रोत को खींचने की आवश्यकता है। मैं बस पुस्तकालय के लिए एक महसूस करना चाहता हूं और यह क्या पेशकश कर सकता है। हर किसी ने कहा कि यह नौकरी के लिए सबसे अच्छा उपकरण था।

संपादित

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

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

         //I can't use the Descendants method. It doesn't appear. 
     var ImageURLS = document.desc 
        .Select(e => e.GetAttributeValue("src", null)) 
        .Where(s => !String.IsNullOrEmpty(s));   
    } 

उत्तर

32

आप इस तरह LINQ का उपयोग कर ऐसा कर सकते हैं,:

var document = new HtmlWeb().Load(url); 
var urls = document.DocumentNode.Descendants("img") 
           .Select(e => e.GetAttributeValue("src", null)) 
           .Where(s => !String.IsNullOrEmpty(s)); 

संपादित: इस कोड अब वास्तव में काम करता है; मैं document.DocumentNode लिखना भूल गया था।

+0

क्या ऑब्जेक्ट प्रकार अपने उदाहरण में दस्तावेज है:

संपादित

अपने उदाहरण का उपयोग? मैं descendants विधि का उपयोग नहीं कर सकता। कृपया मेरा संपादन जांचें। –

+0

मैं '.DocumentNode' को शामिल करना भूल गया। – SLaks

+0

यह भी जांचें कि आप नवीनतम बीटा का उपयोग कर रहे हैं क्योंकि linq कार्यक्षमता नई है – rtpHarry

7

उनके एक उदाहरण के आधार पर, लेकिन संशोधित XPath के साथ:

HtmlDocument doc = new HtmlDocument(); 
List<string> image_links = new List<string>(); 
doc.Load("file.htm"); 
foreach(HtmlNode link in doc.DocumentElement.SelectNodes("//img")) 
{ 
    image_links.Add(link.GetAttributeValue("src", "")); 
} 

मैं इस विस्तार पता नहीं है, तो मुझे यकीन है कि कहीं और करने के लिए सरणी, लेकिन कम से कि इच्छा को लिखने के लिए कैसे नहीं कर रहा हूँ कम से कम आपको अपना डेटा प्राप्त करें। (इसके अलावा, मैं सरणी को सही ढंग से परिभाषित नहीं करता, मुझे यकीन है। क्षमा करें)।

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

     HtmlAgilityPack.HtmlDocument document = new HtmlAgilityPack.HtmlDocument(); 
     List<string> image_links = new List<string>(); 
     document.Load(source); 

     foreach(HtmlNode link in document.DocumentElement.SelectNodes("//img")) 
     { 
      image_links.Add(link.GetAttributeValue("src", "")); 
     } 


    } 
+0

इसे बनाएं: 'सूची image_links = नई सूची (); foreach (doc.DocumentNode.SelectNodes ("// img") में HtmlNode लिंक) { image_links. जोड़ें (link.GetAttributeValue ("src", "")); } ' – TaW

संबंधित मुद्दे

 संबंधित मुद्दे