请教下各位,html标签怎么用正则表达式提取?

brk1985 2018-11-16 07:17:53
1、
<p class="info" style="padding-left: 10px;">
作者:教育部新闻办公室组编<br />


出版日期:2011<br />


主题词:教育工作者:先进工作者-先进事迹-中国<br />

索书号:K825.46<br />

ISBN:7-5041-5725-6<br />

分类:
</p>

2、
<p class="info" style="padding-left: 10px;">
作者:吉林省教育委员会<br />





索书号:G639.20<br />


分类:
</p>


针对上面的,用web采集器碰到问题
问题1:1、2两个作者、出版日期【2的出版日期没有,想要空的怎么办,而不是去取后面3的出版日期(未在上面列出来),“前后截取”不合适,得用正则表达式才行】,不知道该怎么用正则表达式提取?
问题2:之前用“作者:”、“<br />”前后截取,但是“主题词:教育工作者:先进工作者-先进事迹-中国<br />”这里起了干扰了,作者2个关键字多出一处了,不知道怎么解决,不知道正则表达式能否解决?
...全文
108 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
temper55 2018-11-29
  • 打赏
  • 举报
回复
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
<script type="text/javascript">
window.onload=function(){
var text=document.body.innerHTML;

//匹配"作者:"的正则
var ptn_auther=/(\u4F5C\u8005\uFF1A)(.*)<br/;

//匹配段落的正则
var ptn_p=/<p[\s\S]*?<\/p>/ig;
while((p = ptn_p.exec(text)) != null)
{
var a=3;
var b= p[0].match(ptn_auther);
if(b!=null && b.length==3)
{
alert(b[2]);
}
}
}

</script>
</head>
<body>
1、
<p class="info" style="padding-left: 10px;">
作者:教育部新闻办公室组编<br />


出版日期:2011<br />


主题词:教育工作者:先进工作者-先进事迹-中国<br />

索书号:K825.46<br />

ISBN:7-5041-5725-6<br />

分类:
</p>

2、
<p class="info" style="padding-left: 10px;">
作者:吉林省教育委员会<br />





索书号:G639.20<br />


分类:
</p>
</body>
</html>
wz_307 2018-11-21
  • 打赏
  • 举报
回复
1、第一步先按照<p>标签截取3个段落,这样即使有空数据行也不会相互影响 2、第二步通过split('<br />')来切分各个数据行 3、给敏感词设置规则:例如“作者:”优先判定一下字符串中的index是否为0,如果true才是真正的数据行。然后直接从第3位开始截取字符串至末位即可
Hello World, 2018-11-21
  • 打赏
  • 举报
回复
用段落去拆分,每个段落里面一本书,再去解析每本书的信息。
  • 打赏
  • 举报
回复
如果你是用java的话,建议用jsoup去解析

87,899

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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