2017-01-31 21 views
0

클래스의 innerText을 얻으려고합니다. 이제 문제는이 또한 나에게 사진의 텍스트를 반환하는 것입니다HTMLAgilityPack get innerText

using (HttpClient clientduplicate = new HttpClient()) 
{ 
    clientduplicate.DefaultRequestHeaders.Add("User-Agent", 
     "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; WOW64; Trident/6.0)"); 

    using (HttpResponseMessage responseduplicate = await clientduplicate.GetAsync(@"https://www.investing.com/news/stock-market-news/warren-buffett:-i-bought-$12-billion-of-stock-after-trump-won-456954") 
    using (HttpContent contentduplicate = responseduplicate.Content) 
    { 
     try 
     { 
      string resultduplicate = await contentduplicate.ReadAsStringAsync(); 

      var websiteduplicate = new HtmlDocument(); 
      websiteduplicate.LoadHtml(resultduplicate); 

      var titlesduplicate = websiteduplicate.DocumentNode.Descendants("div").FirstOrDefault(o => o.GetAttributeValue("class", "") == "arial_14 clear WYSIWYG newsPage"); 
      var match = Regex.Match(titlesduplicate.InnerText, @"(.*?)<!--", RegexOptions.Singleline).Groups[1].Value; 

      Debug.WriteLine(match.TrimStart()); 
     } 
     catch(Exception ex1) 
     { 
      var dialog2 = new MessageDialog(ex1.Message); 
      await dialog2.ShowAsync(); 
     } 
    } 
} 

: 이 내 코드입니다. 해결 방법을 찾을 수 있지만 이것에 대한 다른 접근법이 있는지 궁금해하고있었습니다. 좀 더 간단하고 빠르게.

플러스 다른 기사/URL에 이것을 사용할 때 다른 사소한 버그가 있습니다.

+1

? ToList()를 ForEach (I => title.tduplicate를 선택하기 위해서는'var titlesduplicate = websiteduplicate.DocumentNode.SelectSingleNode ("// div [contains (@class, 'newsPage')] ');' – Kalten

+0

당신은 무엇을 벌레가 뭐야? – GantTheWanderer

+0

@GantTheWanderer 알파벳 인코딩. 글자가 html로 변경되었습니다. 사소한 것들. –

답변

2

이렇게하는 방법에는 여러 가지가 있습니다. 한 가지 방법은 innerText와를 얻기 전에 회전 목마 DIV를 제거하는 것입니다. 당신이`titlesduplicate.SelectNodes 같은 XPath 쿼리 ("./ IMG")를 정리하여 노드를 할 수 doc.DocumentNode.Descendants("div").FirstOrDefault(_ => _.Id.Equals("imgCarousel"))?.Remove();

+0

'imgCarousel '이 존재하지 않으면'System.NullReferenceException'을 던질 것입니다. 나는 그것을 고쳤지만 당신의 대답을 편집해서 받아 들일 수 있습니다. 알 겠어. –

+0

. null 참조를 확인하기 위해'? '를 추가했습니다. 나는이 C# 6 문법을 알고 있기를 바랍니다. –

+0

감사합니다. –