正则表达式从HTML中匹配img标签的图片地址

 更新时间:2022年09月02日 11:48:31   作者:阿熊  
最近有一个项目要获取页面中所有img标签中的图片地址,这篇文章主要给大家介绍了关于正则表达式如何从HTML中匹配img标签的图片地址的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

前言

有玩过爬虫的人应该都有过在又臭又长的HTML中找寻信息的经历,虽然有各种工具和各种框架可以辅助查找,但是解析HTML的规则也是人想的,制定规则也是十分麻烦的。
恰好在个人的项目中,需要从某个网站中爬取图片,好在需求比较简单,所以试着使用正则表达式来解决。

分析

每个网站中展示图片的地方,无非就是img标签或者style中background-image和background,先解决img标签中的图片。
首先,地址在标签的src属性之中,所以找寻src的位置是必须的。但是不只有img标签拥有src属性,video和style也同样拥有src属性。因此,只匹配src的位置是不够,还得确保这个src的位置在img标签中。

然后,就是匹配src后面的地址,匹配地址的方法已经有许多文章描述过了,不再多说,但本文中用了一个比较取巧的方式去匹配。

总的思路就是先匹配src的位置,在获取图片地址。

正则表达式

  • 首先是匹配src的位置,既然是找位置,那就需要用的正则表达式中预查(?),因为需要的图片地址是在src后面,所以用反向肯定预查,所以初步确定正则表达式可写成:

/(?<=判断条件)/ 至于反向肯定预查的判断条件,就是在img之后的src,所以正则表达式改成如下: /(?<=(img src="))/ 之所以匹配src=", 是因为想要直接就匹配到地址的开头位置,于是就顺手加上。
但是,因为img和src之间可能还存在class或者其他自定义属性,所以还要加上这些可能存在字符的匹配。但是因为这些字符的种类比较多,如双引号"",英文、数字、甚至是中文等等,一一匹配过于麻烦,有个取巧的方式就是匹配非>。
众所周知,>在HTML中是一个标签的结尾,所以它不可能出现在img标签内的img字符和src字符的中间,所以匹配位置的正则表达式可写成: /(?<=(img[^>]*src="))/

可以看到,能够成功找到图片地址的开头位置。

  • 既然位置找到了,那剩下的就是匹配地址了。这里可以使用其他相关文章说的匹配地址的正则表达式,但是和上面一样,同样可以取巧。
    HTML标签中,图片地址是以双引号"开头和结尾的,上面的匹配位置已经匹配到图片开头的双引号之后,那么图片地址还剩下一个双引号,就是结尾的那个。
    那么,直接匹配所有连续不为"的字符不就可以了,思路可能有点复杂,但是写起来简单:

/[^"]*/

  • 因此,总的正则表达式为:

/(?<=(img[^>]*src="))[^"]*/g 结尾加个g是表示匹配所有符合条件的字符串,现在就可以匹配出图片地址了:

总结

到此这篇关于正则表达式从HTML中匹配img标签图片地址的文章就介绍到这了,更多相关正则表达式匹配img标签图片地址内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 写出高效率的正则表达式技巧总结

    写出高效率的正则表达式技巧总结

    有相当大的一部分程序员他们只考虑如何能尽快把活干完,从来不考虑如何使自己的代码更完美,更高效,这样的程序员永远也达不到一定的高度。当然,在写正则表达式的时候,我们首先要保证准确性,其次才是效率问题。下面是一些提高正则表达式效率的小窍门。
    2015-09-09
  • 浅析正则表达式

    浅析正则表达式

    所谓的正则表达式,就是用一类元字符(不表示本身意义,而表示统配或其他意义),组合其他字符所编数出来的,能够匹配符合条件的字符
    2013-09-09
  • 一文搞懂正则表达式基础语法以及如何应用

    一文搞懂正则表达式基础语法以及如何应用

    正则表达式是一种描述字符串结构的语法规则,是用于匹配字符串中字符组合的模式,同时正则表达式也是对象,下面这篇文章主要给大家介绍了关于如何通过一文搞懂正则表达式基础语法以及如何应用的相关资料,需要的朋友可以参考下
    2022-09-09
  • 值得收藏的正则表达式大全

    值得收藏的正则表达式大全

    这篇文章主要为大家分享了正则表达式大全,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-11-11
  • 正则表达式i修饰符(大小写不敏感)

    正则表达式i修饰符(大小写不敏感)

    这篇文章主要介绍了正则表达式中i修饰符用来规定正则表达式的匹配是大小写不敏感的,需要的朋友可以参考下
    2016-12-12
  • 轻松入门正则表达式之非贪婪匹配篇详解

    轻松入门正则表达式之非贪婪匹配篇详解

    正则表达式(regular expression)描述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等
    2021-10-10
  • Java正则表达式验证是否包含某个字符串的示例代码

    Java正则表达式验证是否包含某个字符串的示例代码

    作为一名经验丰富的开发者,我将教会你如何使用Java正则表达式来验证是否包含某个字符串,在本文中,我将按照以下步骤来指导你完成操作,感兴趣的朋友一起看看吧
    2023-12-12
  • 正则表达式匹配任意字符(包括换行符)的写法

    正则表达式匹配任意字符(包括换行符)的写法

    在正则中,匹配任意字符,其实写法网上有很多,但因为各种软件或程序写法不支持等原因导致的问题,大家可以多研究。
    2009-08-08
  • PHP 正则表达式的几则使用技巧

    PHP 正则表达式的几则使用技巧

    PHP正则表达式主要用于字符串的模式分割、匹配、查找及替换操作。使用正则表达式在某些简单的环境下可能效率不高,因此如何更好的使用PHP正则表达式需要综合考虑
    2009-08-08
  • JScript中正则表达函数的说明与应用

    JScript中正则表达函数的说明与应用

    JScript中正则表达函数的说明与应用...
    2007-04-04

最新评论