我遇到解析html的问题,我想从中获取数据
<td id="Company" style="border-bottom-width: 0px; padding-left: 5px">
<strong>ABC</strong>
</td>
所以我需要的数据当然只是“ABC”,我尝试了以下解析规则,但它不起作用
/<td id=\"Company\" style=\"border-bottom-width: 0px; padding-left: 5px\">
<strong>(.*)<\/strong>
<\/td>/i
任何人都可以提供帮助并熟悉这个?
答案 0 :(得分:2)
你真的不应该使用正则表达式来解析html。它总是陷入一个纠结的混乱中。
使用具有整洁功能的库,如Beautiful Soup,JTidy,nekohtml,....然后遍历DOM树(或处理sax事件)以获取标签的内容。
然而,一旦完成HTML / XML解析,正则表达式就可以很好地从岩石中获取金块。答案 1 :(得分:1)
您可以尝试使用此正则表达式来获取嵌套在单元格中的STRONG标记中的文本:
/<td\s*id="Company"[^>]*>\s*<strong>(.*?)</strong>\s*</td>/ms
答案 2 :(得分:0)
简单使用HtmlAgilityPack
HtmlDocumet doc= new HtmlDocument();
doc.loadHtml("<td id="Company" style="border-bottom-width: 0px; padding-left: 5px">
<strong>ABC</strong>
</td>");
HtmlNode node= doc.DocumentNode.selectSingleNode("//strong");
if(node!=null)
String value= node.innerText;// value have ABC
如果你必须从网络上获取HTML
var request = (HttpWebRequest)WebRequest.Create("URL");
var response= (HttpWebResponse)request.getresponse();
using (var stream = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding(1252))) // you could change encoding
{
output = stream.ReadToEnd(); // output now have html in string form
}
outpul变量包含字符串泡沫中的html,您可以使用此字符串传递给doc.loadHtml(输出);
如果想了解更多信息google'htmlagilitypack'和'HtmlDocument':)