A页面
<div class="content">
<ul id="ul1">
<li><a href="B页面网址">a</a></li>
</ul>
<div id="bbb"></b> -- 干扰片段 <ul id="ul2">
<li><a href="C页面网址">b</a></li>
</ul>
</div>C页面内容
<div class="PbLk">
<div class="SbLk" >
<h1 id="title">标题</h1>
<div class="SBLKCon" id="artibody">
<p>有用信息</p>
<p>有用信息</p>
<style type="text/css">没用的样式</script> --干扰片段还有部分js <p>有用信息</p>
</div>
</div>问题如下:
1:Regex reg = new Regex(@"(?is)(?<=<div[^>]*?class=""content""[^>]*?>(?:(?!</?div).)*)<a[^>]*?href=(['""\s]?)(?<url>[^'""\s]+)\1[^>]*?>(?<title>.*?)</a>"); 这一段正则遇到干扰的片段之后没办法读取到C页面的网址信息 只能读取到B页面的
2: 我手动写的 获取标题错在何处
Regex regTitle = new Regex("<h1 id=\"title\">(?<title>.*?)</h1>", RegexOptions.Multiline | RegexOptions.IgnoreCase);
string title= regTitle.Matches(html)[0].Groups["title"].Value; //html里面获取的页面的所有信息是有值的
3: 获取C页面中的 有用信息 怎么写正则: 在指定div中查询有效的值
<div class="content">
<ul id="ul1">
<li><a href="B页面网址">a</a></li>
</ul>
<div id="bbb"></b> -- 干扰片段 <ul id="ul2">
<li><a href="C页面网址">b</a></li>
</ul>
</div>C页面内容
<div class="PbLk">
<div class="SbLk" >
<h1 id="title">标题</h1>
<div class="SBLKCon" id="artibody">
<p>有用信息</p>
<p>有用信息</p>
<style type="text/css">没用的样式</script> --干扰片段还有部分js <p>有用信息</p>
</div>
</div>问题如下:
1:Regex reg = new Regex(@"(?is)(?<=<div[^>]*?class=""content""[^>]*?>(?:(?!</?div).)*)<a[^>]*?href=(['""\s]?)(?<url>[^'""\s]+)\1[^>]*?>(?<title>.*?)</a>"); 这一段正则遇到干扰的片段之后没办法读取到C页面的网址信息 只能读取到B页面的
2: 我手动写的 获取标题错在何处
Regex regTitle = new Regex("<h1 id=\"title\">(?<title>.*?)</h1>", RegexOptions.Multiline | RegexOptions.IgnoreCase);
string title= regTitle.Matches(html)[0].Groups["title"].Value; //html里面获取的页面的所有信息是有值的
3: 获取C页面中的 有用信息 怎么写正则: 在指定div中查询有效的值
string pattern = @"(?is)(?<=<div[^>]*?class=""content""[^>]*?>(?:(?!</?div>).)*)<a[^>]*?href=(['""\s]?)(?<url>[^'""\s]+)\1[^>]*?>(?<title>.*?)</a>";
string pattern = @"(?is)(?<=<div[^>]*?id=""artibody""[^>]*?>(?:(?!</?div>).)*)<p>([\s\S]*?)</p>";
foreach (Match m in Regex.Matches(tempStr, pattern))
{
//循环输出
string text = string.Format("{0}", m.Groups[1].Value);
//有用信息
}
?:匹配的贪婪模式是怎么回事啊 为什么抓取有的站点是乱码 有的站点不是乱码啊
谢谢你了
大哥 这两段正则有区别吗?
string pattern = @"(?is)(?<=<div[^>]*?class=""content""[^>]*?>(?:(?!</?div>).)*)<a[^>]*?href=(['""\s]?)(?<url>[^'""\s]+)\1[^>]*?>(?<title>.*?)</a>";