0

誰か助けていただければ幸いです!グルーポンのウェブサイトhttp://www.groupon.com/browse/chicago?category=activities-and-nightlifeの次のページを解析しようとしています

  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;
        }

ここで混乱します。取引に関するすべての情報をに書き込む必要がありますが 、System.NullReferenceExceptionを取得DbSet<Deal> Dealsしたときにコンテンツを表示しようとしても、オブジェクト参照が。の行のオブジェクトのインスタンスに設定されていません。ViewBag.Message = title + country + location + price;content_block

何が間違っているのか=(よろしくお願いします!

4

1 に答える 1

0

問題は、空のコレクションの代わりにノードが見つからない場合、selectnodes が何もまたは null を返さないことです。したがって、これはおそらくif (content_block != null) {上記のコード ブロックをラップする必要があることを意味します。

于 2012-11-09T21:11:20.140 に答える