网页数据提取常用正则总结
展开全部
当抓取某个网并分析网页数据时,经常会使用正则匹配网页源码中的相关数据(一般是链接),下面就说一下常用的几个正则。
\w:匹配字母或数字或下划线或汉字
\d:匹配数字
常见的网址或图片链接大部分都是这种格式,
比如:"http://www.jianshu.com/p/b9db8f395ea1", 就可以通过正则"http://www.jianshu.com/p/\w+"来匹配(其中'+'代表可以有多个字符);
还有比较复杂点的"http://news.mtime.com/2017/09/25/1573897.html",可以用"http://news.mtime.com/\d+/\d+/\d+/\d+.html"来匹配;
\S:匹配所有非空白字符
比如:"http://news.mtime.com/45515/asdasd-dsds-dsdsd.html"; 可以用"http://news.mtime.com/\d+/\S+.html"来匹配;
有时候我们本想只获取网页中的所有文章链接,比如"http://news.mtime.com/45515/asdasd-dsds-dsdsd"式的;
我们可以通过上文中的"\S+"可以解决,即"http://news.mtime.com/\d+/\S+";
那么问题来了,这个正则不仅会匹配网页中的文章链接,可能还会匹配我们不想要的链接,
比如像这种js链接"http://news.mtime.com/322323/asdasd/sdsds.js"也会匹配到。
所以我们需要将匹配范围缩小,即只匹配字母和横线,那么这个网址可以用"http://news.mtime.com/\d+/[\w-]+.html"解决。
\w:匹配字母或数字或下划线或汉字
\d:匹配数字
常见的网址或图片链接大部分都是这种格式,
比如:"http://www.jianshu.com/p/b9db8f395ea1", 就可以通过正则"http://www.jianshu.com/p/\w+"来匹配(其中'+'代表可以有多个字符);
还有比较复杂点的"http://news.mtime.com/2017/09/25/1573897.html",可以用"http://news.mtime.com/\d+/\d+/\d+/\d+.html"来匹配;
\S:匹配所有非空白字符
比如:"http://news.mtime.com/45515/asdasd-dsds-dsdsd.html"; 可以用"http://news.mtime.com/\d+/\S+.html"来匹配;
有时候我们本想只获取网页中的所有文章链接,比如"http://news.mtime.com/45515/asdasd-dsds-dsdsd"式的;
我们可以通过上文中的"\S+"可以解决,即"http://news.mtime.com/\d+/\S+";
那么问题来了,这个正则不仅会匹配网页中的文章链接,可能还会匹配我们不想要的链接,
比如像这种js链接"http://news.mtime.com/322323/asdasd/sdsds.js"也会匹配到。
所以我们需要将匹配范围缩小,即只匹配字母和横线,那么这个网址可以用"http://news.mtime.com/\d+/[\w-]+.html"解决。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询