由于俩个网站公用同个数据,不想在写个连接另外一个的数据库,想直接抓取信息显示
例如有个字符串
string input = "<table style=width:100px><tr><td style=\"border:1px solid #ccc\">天天开心1</td><td style=\"border:1px solid #ccc\">天天开心2</td></tr></table><table><tr><td style=\"border:1px solid #ccc\">天天开心3</td></tr></table>";
想要td里面的内容。该怎么弄?抓取的我会,用HttpWebrequest可以抓取到全部信息。
例如有个字符串
string input = "<table style=width:100px><tr><td style=\"border:1px solid #ccc\">天天开心1</td><td style=\"border:1px solid #ccc\">天天开心2</td></tr></table><table><tr><td style=\"border:1px solid #ccc\">天天开心3</td></tr></table>";
想要td里面的内容。该怎么弄?抓取的我会,用HttpWebrequest可以抓取到全部信息。
using System.Text.RegularExpressions;
string input = "<table style=width:100px><tr><td style=\"border:1px solid #ccc\">天天开心1</td><td style=\"border:1px solid #ccc\">天天开心2</td></tr></table><table><tr><td style=\"border:1px solid #ccc\">天天开心3</td></tr></table>";
foreach (Match m in Regex.Matches(input, @"(?is)<td[^>]+>(.+?)</td>"))
Console.WriteLine(m.Groups[1].Value);
string input = "<table class=\"a\" style=width:100px><tr><td style=\"border:1px solid #ccc\">天天开心1</td><td style=\"border:1px solid #ccc\">天天开心2</td></tr></table><table class=\"a\"><tr><td style=\"border:1px solid #ccc\">天天开心3</td></tr></table>";
说清楚你的要求
foreach (Match m in Regex.Matches(input, @"(?is)<table[^>]+class=""a""[^>]*>(<tr[^>]*><td[^>]+>(.+?)</td></tr>)+?</table>"))
foreach (Match m2 in Regex.Matches(m.Groups[1].Value, @"<td[^>]+>(.+?)</td>"))
Console.WriteLine(m2.Groups[1].Value);
有更好的方法的,不过我的正则也只能到这个水平了
<table class=""a"" style=width:100px><tr><td style=""border:1px solid #ccc"">天天开心1</td><td style=""border:1px solid #ccc"">天天开心2</td></tr></table>
<table class=""a""><tr><td style=""border:1px solid #ccc"">天天开心3</td></tr></table>";
Regex reg = new Regex(@"(?<=<table[^>]*?class=""a""[^>]*?>(?:(?!</?table).)*)<td[^>]*?>(.*?)</td>");
foreach (Match m in reg.Matches(input))
Console.WriteLine(m.Groups[1].Value);