2017-04-13 9 views
1

私はdiv要素内のコンテンツをこすりしようとしています:htmlagilitypackでdivコンテンツを選択する '値にnullを設定することはできません。'

<div itemprop="articleBody">random, unique content in this div, different each time</div> 

試してみて、私はdivの間でコンテンツをこすりするウェブページにアクセスすると

var html = "random url eachtime.com"; 
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument(); 
doc.LoadHtml(html); 
var nodes = doc.DocumentNode.SelectNodes("div[@itemprop=\"articleBody\"]"); 
var inntertexts = nodes.Select(node => node.InnerText); 
articletext.Text = inntertexts.ToString(); 

上のdivの間でコンテンツを取得するための私のコードを私は次のようになります

例外...値をnullにすることはできません。 パラメータ名:ソース

私もそうのようなXPathのパスを試してみました:

/html[1]/body[1]/div[3]/div[2]/div[3]/div[3]/div[5]/div[1]/div[1]/div[1] 

私は、以下のリンクからarticleBodyを取得しようとしています:ビューソース:http://www.dailymail.co.uk/sciencetech/article-4408856/Samsung-building-flip-phone-TWO-screens.html?ITO=1490&ns_mchannel=rss&ns_campaign=1490

どのようにすることができます私はこれを修正するので、divのコンテンツを取得できますか?

+2

'itemprop'の値をチェックすると、大文字の** B ** –

+0

があります。編集した – 4334738290

答えて

0

divタグが他のタグの内側にある可能性があります。その場合は、"//div[@itemprop=\"articleBody\"]"(divタグの前にスラッシュ)を使用できます。

class Program 
{ 
    static void Main(string[] args) => Task.Run(() => MainAsync(args)).Wait(); 

    static async Task MainAsync(string[] args) 
    { 
     var html = await GetResponseFromURI(new Uri("http://www.dailymail.co.uk/sciencetech/article-4408856/Samsung-building-flip-phone-TWO-screens.html?ITO=1490&ns_mchannel=rss&ns_campaign=1490")); 
     HtmlDocument doc = new HtmlDocument(); 
     doc.LoadHtml(html); 
     var nodes = doc.DocumentNode.SelectNodes("//div[@itemprop=\"articleBody\"]"); 
     if (nodes != null) 
     { 
      Console.WriteLine(nodes.Select(node => node.InnerText).FirstOrDefault()); 
     } 
     Console.ReadLine(); 
    } 

    static async Task<string> GetResponseFromURI(Uri uri) 
    { 
     var response = ""; 
     using (var client = new HttpClient()) 
     { 
      HttpResponseMessage result = await client.GetAsync(uri); 
      if (result.IsSuccessStatusCode) 
       response = await result.Content.ReadAsStringAsync(); 
     } 
     return response; 
    } 
} 

enter image description here

全くitemprop=\"articleBody\"とのdivタグが存在しない場合は、ヌルチェックを使用する必要があります。

+0

まだ同じ例外:例外...値をnullにすることはできません。 パラメータ名:source – 4334738290

+0

上記のコードは、コンソールアプリケーションで私にとって役立ちます。あなたは私に入力HTMLを表示できますか? – Win

+0

確かなこと:ビューソース:http://www.dailymail.co.uk/sciencetech/article-4408856/Samsung-building-flip-phone-TWO-screens.html?ITO = 1490&ns_mchannel = rss&ns_campaign = 1490 – 4334738290

関連する問題