2012-11-09 3 views
0

누군가 도와 주시면 감사하겠습니다. 나는 내가 원하는 각 블록에서 다음 http://www.groupon.com/browse/chicago?category=activities-and-nightlifeHtmlAgilityPack을 사용하여 html의 여러 노드를 구문 분석하는 방법은 무엇입니까?

var webGet = new HtmlWeb(); 
    var deal1 = webGet.Load("http://www.groupon.com/browse/chicago?category=activities-and-nightlife"); 

나는 각 거래의 전체 블록을 얻으려면 (할인 즉, 이벤트)

HtmlNodeCollection content_block = deal1.DocumentNode.SelectNodes("//div[@class = 'deal-list-tile grid_5_third']"); 

를 그루 폰 웹 사이트의 다음 페이지를 구문 분석하려고 해요 제목, 회사 이름, 위치 및 가격을 얻으십시오. 여기에 내가 혼란스러워

foreach(HtmlNode node in content_block) 
     { 
      string title2 = node.SelectSingleNode("//div[@class = 'deal-title js-permalink']").InnerText; 
      string country2 = node.SelectSingleNode("//p[@class = 'merchant-name']").InnerText; 
      string location2 = node.SelectSingleNode("//p[@class = 'location']").InnerText; 
      string price2 = node.SelectSingleNode("//div[@class = 'price']/span").InnerText; 
     } 

, 내가 DbSet<Deal> Deals으로 거래에 대한 모든 정보를 작성해야합니다,하지만 난 ViewBag.Message = title + country + location + price; 같은 내용을 표시하려고해도 난 System.NullReferenceException를 얻을 : 개체 참조의 인스턴스로 설정되지 않았습니다 줄에있는 객체는 content_block입니다.

내가 사전에 잘못된 = ( 감사 뭐하는 거지! 어떤 노드가 대신 빈 집합으로 발견되지 않는 경우

+0

내가 열거 한 페이지에서 [해당 페이지 소스를 볼 때 해당 이름의 클래스를 찾을 수 없습니다.] API https://sites.google에 액세스하는 것이 더 나을 것입니다. .com/site/grouponapiv2/home – marvin

답변

0

문제는 selectnodes 아무것도 돌려줍니다 없다는 것 같습니다. 그래서 이것은 당신은 아마 포장해야 의미 if (content_block != null) { 위의 코드 블록

+0

그래,하지만 아무것도 표시하지 않습니다, HtmlNodeCollection 비어있는 것, 그러나 나는 div 노드를 선택했습니다. –

관련 문제