高分 求修改 正则表达式

idtest5 2012-02-17 05:36:26

想提取百度和谷歌搜索结果,包括标题、URL、和简介。现在代码只能提取谷歌的内容,并且内容获取的不完整。

百度例子:

<table cellpadding="0" cellspacing="0" class="result" id="18" ><tr><td class=f><h3 class="t"><a onmousedown="return c({'fm':'as','F':'778717EA','F1':'9D73F1E4','F2':'4CA6BE6B','F3':'54E5243F','T':'1329470302','title':this.innerHTML,'url':this.href,'p1':18,'y':'EFEDDFDF'})" href="http://www.se-express.com/about/about1.htm"target="_blank"><em>搜索引擎</em>分类≡三种主要<em>搜索引擎</em>种类</a>
</h3><font size=-1> 搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和<em>元搜索引擎</em>(Meta Search ...<br><span class="g">www.se-express.com/about/about1.htm 2006-1-17 </span> - <a href="http://cache.baidu.com/c?m=9f65cb4a8c8507ed4fece763105392230e54f7226bc0d063289ed108c4251a564711b2e6783f43548e823a7a52ff141bacf32172405966e88f8dd50a8bb4855e299f5447671df65663a30ed9c85154b137e45ffeae69f0ccf025e7d8c5a2da4324ce&p=c6769a4186cc42ad5ff3d20c4d07c4&user=baidu&fm=sc&query=%D4%AA%CB%D1%CB%F7%D2%FD%C7%E6&qid=aaaa17cc1c6af7be&p1=18" target="_blank" class="m">百度快照</a><span class="liketip"id="like_3292908618009573912"></span>
<br></font></td></tr></table>

谷歌例子:
<h3 class="r"><a href="http://www.sowang.com/search/meta_search.htm" target=_blank class=l onmousedown="return rwt(this,'','','','3','AFQjCNHg7RWhFwyHUHZ5EyIJqMwSZiWAgQ','','0CEcQFjAC',null,event)">中文<em>元搜索引擎</em>-- 中文搜索引擎指南网</a></h3><div class="s"><div class="f kv"><cite>www.sowang.com/search/meta_search.htm</cite><span class=gl> - <a href="http://webcache.googleusercontent.com/search?q=cache:wGc9uKiuPbsJ:www.sowang.com/search/meta_search.htm+%E5%85%83%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E&cd=3&hl=zh-CN&ct=clnk" target=_blank onmousedown="return rwt(this,'','','','3','AFQjCNGOw2PghnD_Jgz0rHaka83Krex44A','','0CEgQIDAC',null,event)">网页快照</a></span><span class=vshid><a href="/search?hl=zh-CN&newwindow=1&safe=strict&q=related:www.sowang.com/search/meta_search.htm+%E5%85%83%E6%90%9C%E7%B4%A2%E5%BC%95%E6%93%8E&tbo=1&sa=X&ei=xB4-T_D4KvCviQfdh9DCBA&ved=0CEkQHzAC">类似结果</a></span></div><div class="esc slp" id="poS2" style="display:none">您已公开地对此项 +1。 <a href="#" class="fl">撤消</a></div><span class="st"><em>元搜索引擎</em>,通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的(甚至是同时利用若干个)搜索引擎来实现检索操作,是对分布于网络的多种检索 <b>...</b><br></span></div>


现在的谷歌代码是:
string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));
string pattern = @"(?<=<h3[\s\S]*?)((<b>[\s\S]*?</b>[^<]*)+)[\s\S]*?(<cite>\s*([^<]+)\s*</cite>)";
foreach (Match m in Regex.Matches(tempStr, pattern))
{
//循环输出
string title = m.Groups[1].Value;//<b>什么</b>是>> 首页-<b>什么</b>是<b>什么</b>,搜搜就知道!
string href_all = m.Groups[3].Value;//<cite>www.shenmeshi.com/</cite>
string href = m.Groups[4].Value;//www.shenmeshi.com/
}

百度代码是:html为读取的数据 string tempStr = File.ReadAllText(@"C:\Documents and Settings\Administrator\桌面\Test.txt", Encoding.GetEncoding("GB2312"));

public List<Keyword> GetKeywords(string html)
{
List<Keyword> keywords = new List<Keyword>();
Regex regtable = new Regex(@"(?is)<table[^>]*?id=(['""]?)(\d{2}|\d{1})\1[^>]*>(?><table[^>]*>(?<o>)|</table>(?<-o>)|(?:(?!</?table\b).)*)*(?(o)(?!))</table>", RegexOptions.IgnoreCase);
Regex rega = new Regex(@"(?is)<a\b[^>]*?href=([""]?)(?<link>[^""\s>]+)\1[^>]*>(?<title>.*?)</a>", RegexOptions.IgnoreCase);
MatchCollection mctable = regtable.Matches(html);
foreach (Match mtable in mctable)
{
if (mtable.Success)
{
Match ma = rega.Match(mtable.Value);
if (ma.Success)
{
Keyword keyw = new Keyword();
keyw.Link = ma.Groups["link"].Value;
keyw.Title = ma.Groups["title"].Value;
keywords.Add(keyw);
}
}
}
return keywords;
}

class Keyword
{
public string Title { get; set; }
public string Link { get; set; }
}
...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
zzzzv0 2012-02-21
  • 打赏
  • 举报
回复
楼主贴的两个测试内容貌似都是谷歌的?
试试把谷歌的正则最后那个<br>后边的?删了
idtest5 2012-02-21
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 return_false 的回复:]

2.谷歌
C# code
string tempStr = File.ReadAllText(@"C:\Users\dell\Desktop\Test.txt",Encoding.GetEncoding("gb2312"));//读取文档
string pattern = @"(?i)(?<=<h3[^>]+class=['""]?r[^>]*>)[\s\S]*?<a……
[/Quote]
还是有一部分不成功的
我贴出一些用的测试内容:谷歌

<h3 class="r"><a href="http://homepage.yesky.com/50/30000550.shtml" target=_blank class=l onmousedown="return rwt(this,'','','','4','AFQjCNGc1U58KCj6JAJ3Wz5OepAxpRBGcg','','0CEMQFjAD',null,event)">Google正在<em>测试</em>新版<em>搜索结果</em>页面_天极网</a></h3><div class="s"><div class="f kv"><cite><span class=bc>homepage.yesky.com › <a href="/url?url=http://soft.yesky.com/&rct=j&sa=X&ei=e1VDT96KGonBiQe4zqHyBA&ved=0CEQQ6QUoADAD&q=%E6%B5%8B%E8%AF%95%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C&usg=AFQjCNHNhNsJ0m5FeOIQ5-X9C9tuzXhyZg" target=_blank>软件频道</a> › <a href="/url?url=http://homepage.yesky.com/&rct=j&sa=X&ei=e1VDT96KGonBiQe4zqHyBA&ved=0CEUQ6QUoATAD&q=%E6%B5%8B%E8%AF%95%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C&usg=AFQjCNG-eWcHyoQFobh-s8IiPEXUHQnR3w" target=_blank>网页陶吧</a></span></cite><span class=gl> - <a href="http://webcache.googleusercontent.com/search?q=cache:qJBBIFYWfzgJ:homepage.yesky.com/50/30000550.shtml+%E6%B5%8B%E8%AF%95%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C&cd=4&hl=zh-CN&ct=clnk" target=_blank onmousedown="return rwt(this,'','','','4','AFQjCNF7yJiUekssv9GGMzDmwG_p4zA05g','','0CEcQIDAD',null,event)">网页快照</a></span><span class=vshid></span></div><div class="esc slp" id="poS3" style="display:none">您已公开地对此项 +1。 <a href="#" class="fl">撤消</a></div><span class="st"><span class="f">2011年5月9日 – </span>消息人士透露,Google正在<em>测试</em>一个全新的<em>搜索结果</em>页面,该页面目前仍然处于<em>测试</em><wbr>阶段,Google对此十分重视。<br></span></div></div><!--n--></li><!--m--><li class="g"><div class="vsc" pved="0CEkQkgowBA" sig="-cL">

百度

<h3 class="r"><a href="http://homepage.yesky.com/50/30000550.shtml" target=_blank class=l onmousedown="return rwt(this,'','','','4','AFQjCNGc1U58KCj6JAJ3Wz5OepAxpRBGcg','','0CEMQFjAD',null,event)">Google正在<em>测试</em>新版<em>搜索结果</em>页面_天极网</a></h3><div class="s"><div class="f kv"><cite><span class=bc>homepage.yesky.com › <a href="/url?url=http://soft.yesky.com/&rct=j&sa=X&ei=e1VDT96KGonBiQe4zqHyBA&ved=0CEQQ6QUoADAD&q=%E6%B5%8B%E8%AF%95%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C&usg=AFQjCNHNhNsJ0m5FeOIQ5-X9C9tuzXhyZg" target=_blank>软件频道</a> › <a href="/url?url=http://homepage.yesky.com/&rct=j&sa=X&ei=e1VDT96KGonBiQe4zqHyBA&ved=0CEUQ6QUoATAD&q=%E6%B5%8B%E8%AF%95%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C&usg=AFQjCNG-eWcHyoQFobh-s8IiPEXUHQnR3w" target=_blank>网页陶吧</a></span></cite><span class=gl> - <a href="http://webcache.googleusercontent.com/search?q=cache:qJBBIFYWfzgJ:homepage.yesky.com/50/30000550.shtml+%E6%B5%8B%E8%AF%95%E6%90%9C%E7%B4%A2%E7%BB%93%E6%9E%9C&cd=4&hl=zh-CN&ct=clnk" target=_blank onmousedown="return rwt(this,'','','','4','AFQjCNF7yJiUekssv9GGMzDmwG_p4zA05g','','0CEcQIDAD',null,event)">网页快照</a></span><span class=vshid></span></div><div class="esc slp" id="poS3" style="display:none">您已公开地对此项 +1。 <a href="#" class="fl">撤消</a></div><span class="st"><span class="f">2011年5月9日 – </span>消息人士透露,Google正在<em>测试</em>一个全新的<em>搜索结果</em>页面,该页面目前仍然处于<em>测试</em><wbr>阶段,Google对此十分重视。<br></span></div></div><!--n--></li><!--m--><li class="g"><div class="vsc" pved="0CEkQkgowBA" sig="-cL">
idtest5 2012-02-19
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 return_false 的回复:]

2.谷歌
C# code
string tempStr = File.ReadAllText(@"C:\Users\dell\Desktop\Test.txt",Encoding.GetEncoding("gb2312"));//读取文档
string pattern = @"(?i)(?<=<h3[^>]+class=['""]?r[^>]*>)[\s\S]*?<a……
[/Quote]

谢谢,我测试一下。
正则大神
  • 打赏
  • 举报
回复
2.谷歌
string tempStr = File.ReadAllText(@"C:\Users\dell\Desktop\Test.txt",Encoding.GetEncoding("gb2312"));//读取文档
string pattern = @"(?i)(?<=<h3[^>]+class=['""]?r[^>]*>)[\s\S]*?<a[^>]+href=(['""]?)([^'""]+)\1[^>]*>((?:(?!</a>).)*)[\s\S]*?</h3>[\s\S]*?<span[^>]*class=\1st\1[^>]*>((?:(?!(?:((/?<br>))?</span>)).)*)";
foreach (Match m in Regex.Matches(tempStr, pattern))
{
//循环输出
string output = m.Value;
string href = m.Groups[2].Value;
/*
* http://www.sowang.com/search/meta_search.htm
*/
string title = m.Groups[3].Value;
/*
* 中文<em>元搜索引擎</em>-- 中文搜索引擎指南网
*/
string description = m.Groups[4].Value;
/*
* <em>元搜索引擎</em>,通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的(甚至是同时利用若干个)搜索引擎来实现检索操作,是对分布于网络的多种检索 <b>...</b>
*/

}
  • 打赏
  • 举报
回复
1.百度
 string tempStr = File.ReadAllText(@"C:\Users\dell\Desktop\Test.txt",Encoding.GetEncoding("gb2312"));//读取文档
string pattern = @"(?<=<h3[^>]+class=['""]?t[^>]*>)[\s\S]*?<a[^>]+href=(['""]?)([^'""]+)\1[^>]*>((?:(?!</a>).)*)[\s\S]*?</h3>[\s\S]*?<font[^>]*>[\s\S]*?((?:(?!(?:(</?br>))?<span[^>]*class=\1g\1).)*)";
foreach (Match m in Regex.Matches(tempStr, pattern))
{
//循环输出
string output = m.Value;
string href = m.Groups[2].Value;
/*
* http://www.se-express.com/about/about1.htm
*/
string title = m.Groups[3].Value;
/*
* <em>搜索引擎</em>分类≡三种主要<em>搜索引擎</em>种类
*/
string description = m.Groups[4].Value;
/*
* 搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和<em>元搜索引擎</em>(Meta Search ...
*/

}
small5e4444 2012-02-18
  • 打赏
  • 举报
回复
http://blog.csdn.net/small5e4444/article/details/5740018
idtest5 2012-02-18
  • 打赏
  • 举报
回复
需要提取的信息:

百度
标题: <em>搜索引擎</em>分类≡三种主要<em>搜索引擎</em>种类
网址:http://www.se-express.com/about/about1.htm
简介: 搜索引擎按其工作方式主要可分为三种,分别是全文搜索引擎(Full Text Search Engine)、目录索引类搜索引擎(Search Index/Directory)和<em>元搜索引擎</em>(Meta Search ...

谷歌
标题:中文<em>元搜索引擎</em>-- 中文搜索引擎指南网
网址:www.sowang.com/search/meta_search.htm
简介:<em>元搜索引擎</em>,通过一个统一的用户界面帮助用户在多个搜索引擎中选择和利用合适的(甚至是同时利用若干个)搜索引擎来实现检索操作,是对分布于网络的多种检索 <b>...</b>
该 Web 应用程序是与 KeePass 数据库兼容的浏览器和桌面密码管理器。 它不需要任何服务器或其他资源。 该应用程序可以在浏览器中运行,也可以作为桌面应用程序运行。KeeWeb 为您提供了一个免费的跨平台密码管理器,其中包括与 KeePass 的完全兼容性。 开源免费跨平台密码管理软件 KeeWeb 中文版开源免费跨平台密码管理软件 KeeWeb 中文版 KeeWeb 特色 适用于所有平台的桌面应用程序:在每个平台上,桌面应用程序看起来都很漂亮:macOS,Windows和Linux。您可以在桌面应用程序中打开本地文件。 主题:在深色和浅色主题之间切换,以您更喜欢的为准。 颜色收藏夹:使用颜色标记项目,并使用“颜色”选项卡轻松找到它们。 多文件支持:打开多个文件,搜索任何条目或将所有文件中的所有项目作为一个列表查看。 一键搜索所有文件:搜索适用于所有文件,所有操作均在一个搜索框中完成。 Dropbox 同步:打开 Dropbox 中的文件,自动跨设备同步更改。 简易标签输入:添加标签以安排条目。在列表中快速选择它们或添加新的。 拖放:将条目附件和数据库文件直接拖放到应用程序中。 受保护的字段:可以在需要时将其隐藏。而且它们将以比普通字段更安全的方式存储在内存中。 密码生成器:生成任意长度的密码,仅包含所需的符号。 脱机访问:保存文件以供脱机使用,即使是从 Dropbox 打开的文件也是如此。您始终可以访问离线版本,更改将在您再次在线时自动同步。 快捷方式:使用快捷方式可以更快地访问操作。 高级搜索选项:通过指定字段,搜索密码,历史记录并使用强大的正则表达式语法来优化搜索。 历史记录:您所做的所有更改都会记录到历史记录中。您可以回滚到任何状态或完全删除该状态。 条目图标:从预定义的高分辨率图标集中选择一个图标,下载网站图标或使用您自己的图标。 表格视图:在列表和表格布局之间切换。 嵌入式图像查看器:将图像附加到条目上,然后单击以查看。 开源:该应用程序是完全免费的:没有试用版,没有演示版本,没有限制。甚至更多:您始终可以自己从资源中构建它。源代码可在 GitHub 上获得。 您可以轻松地从具有时尚,直观界面的安全数据库中存储所有密码。只需单击即可完成所有操作。如上所述,KeeWeb 与 KeePass 兼容,利用 .KDBX 格式存储密码。这个事实允许打开 .KDBX 文件以及在本地存储它们,或者您可以将其与 Dropbox,Google Drive,OneDrive 等各种 Cloud 服务同步。 KeeWeb 包括用于密码组织的选项,例如用于特定类型密码的组,以方便参考和检索。 KeeWeb 提供了全部功能,包括自动高级搜索选项,剪贴板清除,自动锁定,附件支持,字段保护,快捷方式,密码生成器以及设置密码有效期的功能。它还结合了一种查看更改历史记录的方式,并具有回滚到任何状态或完全删除状态的附加好处。
Total Commander Chinese (Simplified) Enhanced Edition Release Notes ================================================================================= Total Commander 中文增强版 版本说明 软件名称:Total Commander 软件版本:9.21a 64位正式版 官方网站:http://www.ghisler.com 定制作者:飞扬时空 定制版本:5.14.1 个人主页:http://flyonzone.ys168.com 更新日期:2018年9月15日 第一节 软件简介 Total Commander 是一款著名的文件管理软件,其功能类似于资源管理器。它具有两个并 排的文件窗口,方便用户对文件及文件夹进行复制、移动、删除等操作和管理。 Total Commander 的特色功能: - 并排双窗口设计:处理不同位置文件更方便高效; - 支持文件夹标签:方便用户快速切换多个文件夹; - 内置文件查看器:可快速查看多种类型文件内容; - 丰富的插件资源:极大地拓展和增强了软件功能; - 批量重命名工具:支持多种命名规则,功能强大; - 文件夹同步工具:可比较并同步不同文件夹内容; - 文件间内容比较:可比较并修改文件间内容差异; - 增强的搜索功能:可按指定条件搜索文件及内容; - 文件传输客户端:支持多组服务器上传下载文件; - 文件压缩与解压:支持处理常见的压缩文件格式; - 文件分割与合并:可按要分割文件及合并文件; - 文件编码与解码:支持多种格式文件编码及解码; - 文件过滤与定位:可快速定位到符合条件的文件; - 支持命令行操作:支持带参数启动各种应用程序; - 常用文件夹列表:方便快速访问常用系统文件夹; - 文件夹历史列表:方便快速访问浏览过的文件夹; - 高度的可配置性:可自定义工具栏和菜单等资源; - 支持键盘快捷键:可通过快捷键调用大多数功能; - 支持多国语言及 Unicode:消除语言文字的鸿沟; - 支持长文件名:文件名长度最多可达 1022 字符; - 支持通配符及正则表达式:搜索及重命名更方便; - 其他功能有待您发掘…… Total Commander 9.x 系列版本新增特色功能: - 新增视图模式:可通过手动或按指定规则自动切换; - 新增垂直工具栏:方便用户点击图标访问更多功能; - 可集成 Everything :此工具可提高文件搜索效率; - 支持橡皮筯选择(框选)模式:选择文件更加方便; - 新增新式风格主菜单及工具栏图标,并可随时切换; - 更好地支持高分辨率及多显示器间不同分辨率显示; - 新增自动检查更新功能; - 其它功能改进和增强…… 我确信,Total Commander 是一款非常优秀的文件管理软件,它能给您带来更多便利,值 得我们深入了解并长期使用! 第二节 版本特色 相对于官方版本而言,本定制版本具有如下鲜明特色: - 完美中文版:集成中文版文档及插件,支持拼音首字母定位等功能; - 功能更强大:集成精选插件和实用工具,软件功能得以丰富和增强; - 使用更方便:精心定制菜单、工具栏、文件夹列表、快捷键等资源; - 界面更美观:精选图标、字体、颜色、尺寸等要素,视觉效果更佳; - 安装更灵活:可选择多种安装类型,充分满足个性化、多样化需。 第三节 定制内容 一、精心定制资源 1、中文菜单文件:精心定制菜单项目,内容更完整、调用更方便; 2、中文帮助文件:方便用户随时查阅,更好地理解和使用本软件; 3、图标及工具栏:集成三种图标方案,并添加系统资源等工具栏; 4、汉化插件资源:简体中文界面,用户使用更方便、体验更自然; 5、常用文件夹菜单:通过该菜单可快速跳转到常用的系统文件夹; 6、完善快捷键设置:通过使用快捷键,用户可快速调用相应功能; 7、预置外部命令:较丰富的外部命令,方便用户自行调用和设置; 8、说明文档:制作版本

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧