正则表达式获取图片地址及超链接
最近有这么个需求,要获取图片中的图片地址及超链接地址,有的图片有超链接,有的图片没有,如:
<div id="main"><ul><li><a href="http://www.guizhou.gov.cn" style="padding: 10px;"><img src="data:images/slides/1.jpg" alt="" /></a></li><li><img src="data:images/slides/2.jpg" alt="" /></li><li><a href="http://www.gzylxq.cn/" class=""><img src="data:images/slides/3.jpg" alt="" /></a></li><li><img src="data:images/slides/4.jpg" alt="" /></li> <li><a href="http://www.gznc.edu.cn" class="last" title=""><img src="data:images/slides/5.jpg" alt="" /></a></li> </ul></div>
采用正则表达式匹配,发现不能一步到位,有超链接的和没有超链接的得分开(可能还有更优的解决方案),先将a标签解析出来,得到:<a href="http://www.guizhou.gov.cn" style="padding: 10px;"><img src="data:images/slides/1.jpg" alt="" /></a>,通过正则就可以匹配出a标签的href地址和<img src="data:images/slides/1.jpg" alt="" />,正则再解析就可以得到images/slides/1.jpg,接下来将已经匹配解析的a标签的内容从原始html字符串中替换掉,这样就只剩img标签了,再解析剩下的html字符串就可以得到想要的内容年。
完整代码如下:
<!DOCTYPE html>
<html>
<head>
<title>js正则表达式获取图片地址及超链接</title>
<meta charset="utf-8" />
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
</head> <body>
<div id="main"><ul><li><a href="http://www.guizhou.gov.cn" style="padding: 10px;"><img src="data:images/slides/1.jpg" alt="" /></a></li><li><img src="data:images/slides/2.jpg" alt="" /></li><li><a href="http://www.gzylxq.cn/" class=""><img src="data:images/slides/3.jpg" alt="" /></a></li><li><img src="data:images/slides/4.jpg" alt="" /></li> <li><a href="http://www.gznc.edu.cn" class="last" title=""><img src="data:images/slides/5.jpg" alt="" /></a></li> </ul></div>
<script type="text/javascript">function getImgTargetUrl(htmlstr){//定义正则表达式var patternTagA = /<a[^>]*href=['"]([^"]*)['"][^>]*>(.*?)<\/a>/gim;var patternTagImgSrc = /<img.+?src=('|")?([^'"]+)('|")?(?:\s+|>|\/>)/gim;var patternTagImg = /<img [^>]*src=['"]([^'"]+)[^>]*>/gim;var imgsrcArr=[];//解析a标签中的图片var tagAImgArr = htmlstr.match(patternTagA);console.log(tagAImgArr);if(typeof(tagAImgArr)!=undefined && typeof(tagAImgArr)!='undefined' && tagAImgArr!=null){for(var i=0;i<tagAImgArr.length;i++){var item = patternTagA.exec(tagAImgArr[i]);if(typeof(item)!=undefined && typeof(item)!='undefined' && item!=null){var imgArr = patternTagImg.exec(item[2])if(typeof(item)!=undefined && typeof(item)!='undefined' && item!=null){imgsrcArr.push({ele:item[0],targeturl:item[1],imgurl:imgArr[1]});}//设置lastIndex = 0patternTagImg.lastIndex = 0;}//设置lastIndex = 0patternTagA.lastIndex = 0;}}//将已经解析过的a标签内容过滤掉,继续匹配没有a标签的图片var tagImgArr = htmlstr.replace(patternTagA,"").match(patternTagImg);if(typeof(tagImgArr)!=undefined && typeof(tagImgArr)!='undefined' && tagImgArr!=null){for(var j=0;j<tagImgArr.length;j++){var item = patternTagImg.exec(tagImgArr[j]);if(typeof(item)!=undefined && typeof(item)!='undefined' && item!=null){imgsrcArr.push({ele:"",targeturl:"",imgurl:item[1]});}//设置lastIndex = 0patternTagImg.lastIndex = 0;}}console.log("imgsrcArr:",imgsrcArr);return imgsrcArr;
}
getImgTargetUrl($("#main").html());
</script>
</body>
</html>
最终解析出来的数据如下:
正则表达式获取图片地址及超链接相关推荐
- instagram获取图片地址和视频地址
instagram 获取图片地址和视频地址 先保持 以后在详细说明 package mainimport ("bufio""encoding/json"&quo ...
- 获取图片地址并下载图片
#获取图片地址 import requests from lxml import etree a=requests.get('http://www.xiaohuar.com/hua/') #....g ...
- new File()获取图片地址
new File()获取图片地址如下:new File(System.getProperty("user.dir") + "/src/main/resources/ima ...
- input file详细介绍、更改css样式、获取图片地址、彻底清空上传文件(建议收藏)
文章目录 博客内容 介绍 input 全部类型 file 类型 属性 accept属性 multiple属性 事件监听 css样式更改 上传图片文件,获取图片地址 input type file上传文 ...
- vue从数据库获取图片地址,为什么图片地址为变量时找不到图片?
vue展示以变量地址的文件 vue新手 刚开始学习vue的同学,可能会遇到一个问题,为什么当图片的地址为一个变量的时候,图片就找不到了呢? 接下来我就讲述一下我的解决方法,及思路. 首先,我们打开浏览 ...
- vue中使用require动态获取图片地址
项目场景: 项目中根据图片不同的后缀名,展示不同的图片 问题描述 直接给图片的src绑定图片地址,图片不显示,使用 require('图片本地路径' + '地址变量' + '.png') 也不显示 & ...
- 解决oppo、vivo手机从相册选择图片获取图片地址问题
打开相册 if (position == 0) {//打开相册Intent intent = new Intent();intent.addCategory(Intent.CATEGORY_OPENA ...
- php如何获取图片地址,js如何直接获取网页中图片地址
这次给大家带来js如何直接获取网页中图片地址,js直接获取网页中图片地址的注意事项有哪些,下面就是实战案例,一起来看一下. 第一种方法:js通过正则实现/** * 获取html代码中图片地址 * @p ...
- 怎么在html的img src=src的值这里调用js方法或变量获取图片地址
<html> <head>参考自 </head> <body> <img src="?" id="img" ...
最新文章
- clone git 修改保存路径_Git和Github详细入门教程(别再跟我说你不会Git和Github)
- SQL优化这么做就对了
- hdu4740 Sum
- 糟糕!服务器被植入挖矿木马,CPU 飙升200%。。。
- 糖豆人显示此服务器正在进行游戏,糖豆人服务器频繁崩溃,west滚石教技巧,蓝哥踢球做内鬼...
- C++之关于初始化列表(Initialization List)的一个补充示例
- 推荐一个PPT挣钱路子,日赚800-1000元
- java web工程师百度云教程_JavaWeb工程师全套视频教程 (初级+中级+高级) 一共485集 送面试辅导...
- 卸载mysql数据库报错_完全卸载mysql数据库图文教程
- java仓库管理设计报告_基于javaweb的仓库管理系统的设计和实现 毕业论文
- 终结版水与油——致我献给魔术的青春
- Lisa新歌破吉尼斯世界纪录,MV播放量7460万,中国粉丝贡献大
- Windows 下编译 EXE 文件时把一个外部 txt 文件编译到 EXE 里面
- WPF 几何图形之图形微语言命令
- 【CVPR20超分】Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution
- linux下的rtc机制
- unity 实验演示 教程_铁匠常见问题解答和Unity演示团队
- GET/POST 和TCP/UDP 区别
- 只可顺守不可逆取书法_李克营销论语|给儿子的一封信(关于自我成长自我进化的思考备忘录) - 中国酒业论坛!...
- IE浏览器下载文件名出现中文乱码问题解决
热门文章
- windows下安装PHP的swoole拓展
- 利用CMake编译OpenCV-4.1.2源码,使其可以在VS2012下进行图像处理开发的记录(因缺少OpenBLAS未成功)
- JS处理时间格式国际标准化的方法
- Core Animation学习笔记—第二节Setting up Layer Objects
- 《C++ Primer》第9章 9.3节习题答案
- php技术面试成功后试岗,6.3公里“阅读静安”光音栈桥“会唱歌”
- 导弹发射-河南省第九届省赛D题
- script text html 参数,script type=text/html/script js模版使用
- 我的性格分析和对未来职业的规划
- 如何智慧的提问(个人笔记)