【问题标题】:CSQuery foreach iterationCSQuery foreach 迭代
【发布时间】:2013-11-23 05:59:14
【问题描述】:

我正在使用它来获取一些数据:

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

但我将所有内容都放在 1 行中。我是否可以分别解析该表中的每个元素并对其进行操作(例如在每个元素后添加<br />,这样我就不会在 1 行中获取数据)。

令人惊讶的是,文档没有显示迭代。

【问题讨论】:

  • 你想要html多行还是只列举s中的所有行(\r\n)?
  • 我会将获得的文本放入我的表格中,并在 mvc 的 html 视图中显示。他们网站的来源只是通常的 table-td 东西,但我不知道 csquery 的语法。

标签: c# parsing html-parsing csquery


【解决方案1】:

朝觐。我设法做到了。示例:

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

享受老朋友老朋友

【讨论】:

    【解决方案2】:

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

    如果我得到了你想要的,那就是这样的 =>

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 2017-08-28
    • 2014-06-26
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2015-02-27
    相关资源
    最近更新 更多