打印 上一主题 下一主题
开启左侧

正则表达式提取网页源代码中的中文标题和内容

[复制链接]
楼主
跳转到指定楼层
工正数码 发表于 2023-10-25 11:04:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

欢迎注册登录后浏览更多内容!谢谢!

您需要 登录 才可以下载或查看,没有帐号?注册

x
一、操作目的:从网页源代码中获取标题和内容。并保留标题和正文的网页标签<h2>和<p>。
网页源代码如下:

<h2 class="rich_media_title" id="activity-name">袁白燕小考</h2>
<div id="meta_content" class="rich_media_meta_list"><span class="rich_media_meta rich_media_meta_text">万德敬</span> <span class="rich_media_meta rich_media_meta_nickname" id="profileBt"><a href="javascript:void(0);" id="js_name">袁氏文化</a></span>
<div id="js_profile_qrcode" class="profile_container" style="display:none;"><span class="rich_media_meta rich_media_meta_nickname" id="profileBt"></span>
<div class="profile_inner"><span class="rich_media_meta rich_media_meta_nickname" id="profileBt"><strong class="profile_nickname">袁氏宗族文化</strong> <img class="profile_avatar" id="js_profile_qrcode_img" src="%C3%94%C2%AC%C3%8A%C3%8F%C3%97%C3%9A%C3%97%C3%A5%C3%8E%C3%84%C2%BB%C2%AF-37_files/Xy4xVKPpN36L91LMKqFb5A" alt=""></span>
<p class="profile_meta"><span class="rich_media_meta rich_media_meta_nickname" id="profileBt"><label class="profile_meta_label">微信号</label> <span class="profile_meta_value">yuanshiwh</span></span></p>
<p class="profile_meta"><label class="profile_meta_label">功能介绍</label> <span class="profile_meta_value">传承宗族文化,弘扬中华美德!</span></p>
</div>
<span class="profile_arrow_wrp" id="js_profile_arrow_wrp"> </span></div>
<em id="publish_time" class="rich_media_meta rich_media_meta_text">2018-11-02</em></div>
<div class="rich_media_content" id="js_content">
<p><span style="font-size:16px;font-family:宋体;">【摘要】 袁凯是元末明初著名的诗人,以《白燕》诗闻名。人称“袁白燕”,享年当在百岁上下。但是,关于他的生卒年代,清初就有人质疑,当今学术界对袁凯生卒年代的说法也多牵强。袁凯之父袁介也是当时著名诗人,有作品传世。然而,明清两代许多文献对于袁介存世的界定是不符合史实的。袁介为袁凯的文学才华提供了家学滋养,袁凯也很有乃父之风。现实中的袁凯喜欢交游,与之交游者多为当时俊彦。袁凯与家人感情甚笃,相濡以沫。饱读诗书的袁凯一生有仕有隐,富有传奇色彩,其后裔却湮没无闻。</span></p>
<p><span style="font-size:16px;font-family:宋体;"><br></span></p>
<p style="text-align: center;"><img class="" data-copyright="0" data-ratio="0.66" data-s="300,640" data-src="https://mmbiz.qpic.cn/mmbiz_jpg/zFYUkAWtBa1ORrZ3ia9jVw5dkSuVVgPK7HuONuqZwk99QsDkKTnYy6EUt90hTM9A5DSMjxQMiaEctl4KT42MWbgQ/640?wx_fmt=jpeg" data-type="jpeg" data-w="600" style="width: 328px !important; height: auto !important; visibility: visible !important;" src="%C3%94%C2%AC%C3%8A%C3%8F%C3%97%C3%9A%C3%97%C3%A5%C3%8E%C3%84%C2%BB%C2%AF-37_files/640" crossorigin="anonymous" data-fail="0"></p>
<p style="text-align: center;"><br></p>
<p style="text-align: center;"><strong><span style="font-size: 18px;text-indent: 0em;font-family: 宋体;">一、袁凯的生卒年代</span></strong></p>
<p><span style="font-size:16px;font-family:宋体;">&nbsp;</span></p>
<p><span style="font-size:16px;font-family:宋体;">《明史·袁凯传》曰:袁凯,字景文,松江华亭人。元末为府吏,博学有才辩,议论飚发,往往屈座人。洪武三年,荐授御史。武臣恃功骄恣,得罪者渐众。凯上言:“诸将习兵事,恐未悉君臣礼,请于督都府延通经学古之士,令诸武臣赴都堂听讲,庶得保族全身之道。”帝敕台省延名士直午门,为诸将说书。后帝虑囚毕,命凯送皇太子覆讯,多得矜减。凯还报,帝问:“朕与太子孰是?”凯顿首:“陛下法之正,东宫心之慈”。帝以凯老猾持两端,恶之。凯惧,佯狂免,告归,久之以寿终。凯工诗,有盛名。性诙谐,自号海叟。背戴乌巾,倒骑黄牛,游行九峰间,好事者至绘为图。初,在杨维桢座,客出所赋《白燕诗》,凯微笑,别作一篇以献。维桢大惊赏,遍示座客,人遂呼为“袁白燕”云。</span></p>

二、使用工具:
    水淼正则表达式助手(SMRegular)v1.6.3.1  基于Deelx引擎
提取标题正则表达式:
<h2.*>.*[\u4e00-\u9fa5].*</h2>
运行结果:
<h2 class="rich_media_title" id="activity-name">袁白燕小考</h2>
提取标题正则表达式:
<p>.*[\u4e00-\u9fa5].*</p>
提取结果:
<p><span style="font-size:16px;font-family:宋体;">【摘要】 袁凯是元末明初著名的诗人,以《白燕》诗闻名。人称“袁白燕”,享年当在百岁上下。但是,关于他的生卒年代,清初就有人质疑,当今学术界对袁凯生卒年代的说法也多牵强。袁凯之父袁介也是当时著名诗人,有作品传世。然而,明清两代许多文献对于袁介存世的界定是不符合史实的。袁介为袁凯的文学才华提供了家学滋养,袁凯也很有乃父之风。现实中的袁凯喜欢交游,与之交游者多为当时俊彦。袁凯与家人感情甚笃,相濡以沫。饱读诗书的袁凯一生有仕有隐,富有传奇色彩,其后裔却湮没无闻。</span></p>
<p><span style="font-size:16px;font-family:宋体;"><br></span></p>
<p><span style="font-size:16px;font-family:宋体;">&nbsp;</span></p>

三、批量提取
    正则表达式助手-正则提取-批量提取-修改输出路径-开始-完成-生成新目录《批量提取结果》

四、进一步优化
  工具:UtraReplace(超级批量文本替换5.0)。可以把整个文件夹一次性处理。支持一般替换、开始和结尾特征替换、正则替换。
可以用一般替换分几次查找下面内容,并替换为空白
class="rich_media_title" id="activity-name"
<span style="font-size:16px;font-family:宋体;"><br></span>
<p><span style="font-size:16px;font-family:宋体;">&nbsp;</span></p>

五、加工成网页
  在提取的干净的带有<p>文本</p>标签的内容,用超级批量文本替换工具在开头和结尾分别加上自己的页头和页脚。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  <title>袁氏文化之窗</title>
  <meta name="keywords" content="袁氏文化之窗" />
  <meta name="description" content="袁氏文化之窗" />
  <link rel="shortcut icon" href="images/yuanscn.ico" type="image/x-icon" />
  <link rel="stylesheet" type="text/css" href="../css/pubsty.css" />
</head>
<body>...
...
<div class="footer">
    <p>鄂ICp备11010464号-1 号</p>
    <p>公安机关备案号 42062502000005</p>
    <p>网站管理员袁资友:13972096021</p>
...
    <p>袁氏家谱网 版权所有</p>
  </div>
</body>
</html>
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 支持支持 反对反对
回复

使用道具 举报

沙发
 楼主| 工正数码 发表于 2023-10-25 14:32:51 | 只看该作者
为了解决正则表达式<h2.*>.*[\u4e00-\u9fa5].*</h2>只提取标题,而<p>.*[\u4e00-\u9fa5].*</p>只提取内容不提取标题的问题。把两个提取方法用[]表示出现其中一个就算匹配的方法,把2个公式修改如下:
<[p|h2].*>.*[\u4e00-\u9fa5].*</[p|h2]>。这样改也存在缺点:一是不准确判断<p>和<h2>;二是不能去掉标签内的参数,如:
<p><span style="font-size:16px;font-family:宋体;">上面所录袁介的《检田吏》一诗,《辍耕录》
或者这样
<[h2p].*>.*[\u4e00-\u9fa5].*[</h2></p>]
提取结果:
<h2 class="rich_media_title" id="activity-name">袁白燕小考</h2>
<p><span style="font-size:16px;font-family:宋体;">《明史·袁凯传》曰:袁凯,字景文,松江华亭人。......遍示座客,人遂呼为“袁白燕”云。</span></p>
<p><span style="font-size:16px;font-family:宋体;">&nbsp;</span></p>
说明:前边正则表达式之所以不和后边的一样,是因为后边的直接<>了,而前边的有参数:<p style="max-width: 100%;">汉字汉字汉字</p>
回复

使用道具 举报

板凳
 楼主| 工正数码 发表于 2023-10-27 08:28:20 | 只看该作者
网页内复制的方法:
1、先获取标题内容再存入分组
<h2>(.*)</h2>
2、两次调用分组中存入的内容(正则替换)
<title>\1</title>
<h2>\1</h2>
3、UtraReplace超级文本批量替换工具测试通过
title和h2里面的内容都一样了。
回复

使用道具 举报

快速回复 返回顶部 返回列表