private string GetComments(HtmlAgilityPack.HtmlNode htmlNode) { var commentResult = new StringBuilder(); var commentNode = htmlNode.QuerySelector("div.user-mean"); // user comment var commentValue = commentNode.QuerySelector("div.value-mean-and-delete"); var commentParagraphs = commentValue.QuerySelectorAll("p.mean.cl-content").ToList(); if (commentParagraphs.Count == 0) { return(string.Empty); } var mergeCmtParagraph = new StringBuilder(); for (var i = 0; i < commentParagraphs.Count; i++) { var cmtParagraph = commentParagraphs[i]; mergeCmtParagraph.Append(cmtParagraph.InnerHtml.Replace("\t", string.Empty) .Replace("\r", string.Empty) .Replace("\n", string.Empty) ).Append("<br>"); } commentResult.Append(mergeCmtParagraph.ToString()); // comment vote var commentVote = commentNode.QuerySelector("div.user-infor-comment.cl-content"); var likeNumber = commentNode.QuerySelector("div.user-like div.inline:last-child")?.InnerHtml; var dislikeNumber = commentNode.QuerySelector("div.user-dislike div.inline:last-child")?.InnerHtml; commentResult.Insert(0, $"▲{likeNumber} ▼{dislikeNumber}<br>"); return(commentResult.ToString()); }