最近有这么个需求,要获取图片中的图片地址及超链接地址,有的图片有超链接,有的图片没有,如:

<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>

最终解析出来的数据如下:

正则表达式获取图片地址及超链接相关推荐

  1. instagram获取图片地址和视频地址

    instagram 获取图片地址和视频地址 先保持 以后在详细说明 package mainimport ("bufio""encoding/json"&quo ...

  2. 获取图片地址并下载图片

    #获取图片地址 import requests from lxml import etree a=requests.get('http://www.xiaohuar.com/hua/') #....g ...

  3. new File()获取图片地址

    new File()获取图片地址如下:new File(System.getProperty("user.dir") + "/src/main/resources/ima ...

  4. input file详细介绍、更改css样式、获取图片地址、彻底清空上传文件(建议收藏)

    文章目录 博客内容 介绍 input 全部类型 file 类型 属性 accept属性 multiple属性 事件监听 css样式更改 上传图片文件,获取图片地址 input type file上传文 ...

  5. vue从数据库获取图片地址,为什么图片地址为变量时找不到图片?

    vue展示以变量地址的文件 vue新手 刚开始学习vue的同学,可能会遇到一个问题,为什么当图片的地址为一个变量的时候,图片就找不到了呢? 接下来我就讲述一下我的解决方法,及思路. 首先,我们打开浏览 ...

  6. vue中使用require动态获取图片地址

    项目场景: 项目中根据图片不同的后缀名,展示不同的图片 问题描述 直接给图片的src绑定图片地址,图片不显示,使用 require('图片本地路径' + '地址变量' + '.png') 也不显示 & ...

  7. 解决oppo、vivo手机从相册选择图片获取图片地址问题

    打开相册 if (position == 0) {//打开相册Intent intent = new Intent();intent.addCategory(Intent.CATEGORY_OPENA ...

  8. php如何获取图片地址,js如何直接获取网页中图片地址

    这次给大家带来js如何直接获取网页中图片地址,js直接获取网页中图片地址的注意事项有哪些,下面就是实战案例,一起来看一下. 第一种方法:js通过正则实现/** * 获取html代码中图片地址 * @p ...

  9. 怎么在html的img src=src的值这里调用js方法或变量获取图片地址

    <html> <head>参考自 </head> <body> <img src="?"  id="img" ...

最新文章

  1. clone git 修改保存路径_Git和Github详细入门教程(别再跟我说你不会Git和Github)
  2. SQL优化这么做就对了
  3. hdu4740 Sum
  4. 糟糕!服务器被植入挖矿木马,CPU 飙升200%。。。
  5. 糖豆人显示此服务器正在进行游戏,糖豆人服务器频繁崩溃,west滚石教技巧,蓝哥踢球做内鬼...
  6. C++之关于初始化列表(Initialization List)的一个补充示例
  7. 推荐一个PPT挣钱路子,日赚800-1000元
  8. java web工程师百度云教程_JavaWeb工程师全套视频教程 (初级+中级+高级) 一共485集 送面试辅导...
  9. 卸载mysql数据库报错_完全卸载mysql数据库图文教程
  10. java仓库管理设计报告_基于javaweb的仓库管理系统的设计和实现 毕业论文
  11. 终结版水与油——致我献给魔术的青春
  12. Lisa新歌破吉尼斯世界纪录,MV播放量7460万,中国粉丝贡献大
  13. Windows 下编译 EXE 文件时把一个外部 txt 文件编译到 EXE 里面
  14. WPF 几何图形之图形微语言命令
  15. 【CVPR20超分】Zooming Slow-Mo: Fast and Accurate One-Stage Space-Time Video Super-Resolution
  16. linux下的rtc机制
  17. unity 实验演示 教程_铁匠常见问题解答和Unity演示团队
  18. GET/POST 和TCP/UDP 区别
  19. 只可顺守不可逆取书法_李克营销论语|给儿子的一封信(关于自我成长自我进化的思考备忘录) - 中国酒业论坛!...
  20. IE浏览器下载文件名出现中文乱码问题解决

热门文章

  1. windows下安装PHP的swoole拓展
  2. 利用CMake编译OpenCV-4.1.2源码,使其可以在VS2012下进行图像处理开发的记录(因缺少OpenBLAS未成功)
  3. JS处理时间格式国际标准化的方法
  4. Core Animation学习笔记—第二节Setting up Layer Objects
  5. 《C++ Primer》第9章 9.3节习题答案
  6. php技术面试成功后试岗,6.3公里“阅读静安”光音栈桥“会唱歌”
  7. 导弹发射-河南省第九届省赛D题
  8. script text html 参数,script type=text/html/script js模版使用
  9. 我的性格分析和对未来职业的规划
  10. 如何智慧的提问(个人笔记)