我用C#编写了以下代码,以检索网页中表格的内容(获得许可后)。它几乎可以完美运行,但是某些单元格包含多个这样的值
_______
| 10 |
| 11 |
| 12 |
|___13__|
但是我却得到了值10111213
。
这里是一个链接,因此如果需要进一步清晰的了解,您可以看一下表代码: ttps://ug3.technion.ac.il/rishum/course/104031
WebClient webClient = new WebClient();
string page = webClient.DownloadString("https://ug3.technion.ac.il/rishum/course/104031");
HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();
doc.LoadHtml(page);
List<List<string>> table = doc.DocumentNode.SelectSingleNode("//table[@class='rishum-groups']")
.Descendants("tr")
.Skip(1)
.Where(tr => tr.Elements("td").Count() > 1)
.Select(tr => tr.Elements("td").Select(td => td.InnerText.Trim()).ToList())
.ToList();
答案 0 :(得分:0)
InnerText
属性将删除所有元素,仅保留文本。如果要保留<br>
元素,则应改用InnerHtml
。这是一个示例:
var table = doc.DocumentNode.SelectSingleNode("//table[@class='rishum-groups']")
.Descendants("tr")
.Skip(1)
.Where(tr => tr.Elements("td").Count() > 1)
.Select(tr => tr.Elements("td").Select(td => td.InnerHTML.Trim()).ToList())
.ToList();
如果需要解析这些值,则可以在字符串上使用Split()
方法。这是一个示例:
var myValues = myTextField.Split(new string[] { "<br>" }, StringSplitOptions.None);