CSQuery foreach迭代

时间:2013-11-11 12:22:46

标签: c# parsing html-parsing csquery

我用它来获取一些数据:

string s = dom["table .lotto strong"].Text();

但是我把所有东西都放在了一行。我可以单独解析该表中的每个元素并对其进行操作(例如在每个元素后添加<br />,因此我不会在1行中获取数据)。

文档令人惊讶地没有显示迭代。

2 个答案:

答案 0 :(得分:5)

如果你看一下Text函数的描述,它只返回一个字符串。 基本上,如果你有几个元素,例如2 div,它会将所有内容添加到1个字符串中。 (像string.Join())

如果我得到你想要的东西,那就像那样=&gt;

dom["table .lotto strong"].Each(dom=> {
   //doing something what you need with dom var (dom is a IDomObject type)
});

答案 1 :(得分:2)

哈吉。我成功了。例如:

           CQ dom = CQ.CreateFromUrl("http://www.somewebsite.xxx");

        var rows = dom.Select(".box_results table.results-box_list tr");

        var output = @"<table class='table tableballs'>
                        <thead>
                          <tr>
                            <th></th>
                            <th>Syndicate</th>
                            <th>Draw Date</th>
                            <th>Results</th>
                          </tr>
                        </thead>

                        <tbody>";

        foreach (var row in rows.Has("td"))
        {
            output += "<tr>";
            CQ tdcells = row.Cq().Find("td");

            output += String.Format("<td></td><td>{0}</td><td>{1}</td>",
                tdcells[0].Cq().Text(),
                tdcells[1].Cq().Text());

            var uls = dom.Select(".ball_numbers ul");
            int count = 0;

            output += "<td><ul class='balls'>";
            var numbersTrim = "";

            foreach (var ul in tdcells[2].Cq())
            {
                CQ licells = ul.Cq().Find("li");

                foreach (var li in licells)
                {
                    numbersTrim += String.Join("", "<li>" + licells[count].Cq().Text() + "</li>");
                    count++;
                }
                output += numbersTrim;
            }
            count = 0;
            output += @"</ul></td>
                       </tr>";
        }

        output += @"</table>";

享受老朋友老朋友