最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

正則表達(dá)式從HTML中匹配img標(biāo)簽的圖片地址

 更新時間:2022年09月02日 11:48:31   作者:阿熊  
最近有一個項目要獲取頁面中所有img標(biāo)簽中的圖片地址,這篇文章主要給大家介紹了關(guān)于正則表達(dá)式如何從HTML中匹配img標(biāo)簽的圖片地址的相關(guān)資料,文中通過實例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

有玩過爬蟲的人應(yīng)該都有過在又臭又長的HTML中找尋信息的經(jīng)歷,雖然有各種工具和各種框架可以輔助查找,但是解析HTML的規(guī)則也是人想的,制定規(guī)則也是十分麻煩的。
恰好在個人的項目中,需要從某個網(wǎng)站中爬取圖片,好在需求比較簡單,所以試著使用正則表達(dá)式來解決。

分析

每個網(wǎng)站中展示圖片的地方,無非就是img標(biāo)簽或者style中background-image和background,先解決img標(biāo)簽中的圖片。
首先,地址在標(biāo)簽的src屬性之中,所以找尋src的位置是必須的。但是不只有img標(biāo)簽擁有src屬性,video和style也同樣擁有src屬性。因此,只匹配src的位置是不夠,還得確保這個src的位置在img標(biāo)簽中。

然后,就是匹配src后面的地址,匹配地址的方法已經(jīng)有許多文章描述過了,不再多說,但本文中用了一個比較取巧的方式去匹配。

總的思路就是先匹配src的位置,在獲取圖片地址。

正則表達(dá)式

  • 首先是匹配src的位置,既然是找位置,那就需要用的正則表達(dá)式中預(yù)查(?),因為需要的圖片地址是在src后面,所以用反向肯定預(yù)查,所以初步確定正則表達(dá)式可寫成:

/(?<=判斷條件)/ 至于反向肯定預(yù)查的判斷條件,就是在img之后的src,所以正則表達(dá)式改成如下: /(?<=(img src="))/ 之所以匹配src=", 是因為想要直接就匹配到地址的開頭位置,于是就順手加上。
但是,因為img和src之間可能還存在class或者其他自定義屬性,所以還要加上這些可能存在字符的匹配。但是因為這些字符的種類比較多,如雙引號"",英文、數(shù)字、甚至是中文等等,一一匹配過于麻煩,有個取巧的方式就是匹配非>。
眾所周知,>在HTML中是一個標(biāo)簽的結(jié)尾,所以它不可能出現(xiàn)在img標(biāo)簽內(nèi)的img字符和src字符的中間,所以匹配位置的正則表達(dá)式可寫成: /(?<=(img[^>]*src="))/

可以看到,能夠成功找到圖片地址的開頭位置。

  • 既然位置找到了,那剩下的就是匹配地址了。這里可以使用其他相關(guān)文章說的匹配地址的正則表達(dá)式,但是和上面一樣,同樣可以取巧。
    HTML標(biāo)簽中,圖片地址是以雙引號"開頭和結(jié)尾的,上面的匹配位置已經(jīng)匹配到圖片開頭的雙引號之后,那么圖片地址還剩下一個雙引號,就是結(jié)尾的那個。
    那么,直接匹配所有連續(xù)不為"的字符不就可以了,思路可能有點復(fù)雜,但是寫起來簡單:

/[^"]*/

  • 因此,總的正則表達(dá)式為:

/(?<=(img[^>]*src="))[^"]*/g 結(jié)尾加個g是表示匹配所有符合條件的字符串,現(xiàn)在就可以匹配出圖片地址了:

總結(jié)

到此這篇關(guān)于正則表達(dá)式從HTML中匹配img標(biāo)簽圖片地址的文章就介紹到這了,更多相關(guān)正則表達(dá)式匹配img標(biāo)簽圖片地址內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 寫出高效率的正則表達(dá)式技巧總結(jié)

    寫出高效率的正則表達(dá)式技巧總結(jié)

    有相當(dāng)大的一部分程序員他們只考慮如何能盡快把活干完,從來不考慮如何使自己的代碼更完美,更高效,這樣的程序員永遠(yuǎn)也達(dá)不到一定的高度。當(dāng)然,在寫正則表達(dá)式的時候,我們首先要保證準(zhǔn)確性,其次才是效率問題。下面是一些提高正則表達(dá)式效率的小竅門。
    2015-09-09
  • 淺析正則表達(dá)式

    淺析正則表達(dá)式

    所謂的正則表達(dá)式,就是用一類元字符(不表示本身意義,而表示統(tǒng)配或其他意義),組合其他字符所編數(shù)出來的,能夠匹配符合條件的字符
    2013-09-09
  • 一文搞懂正則表達(dá)式基礎(chǔ)語法以及如何應(yīng)用

    一文搞懂正則表達(dá)式基礎(chǔ)語法以及如何應(yīng)用

    正則表達(dá)式是一種描述字符串結(jié)構(gòu)的語法規(guī)則,是用于匹配字符串中字符組合的模式,同時正則表達(dá)式也是對象,下面這篇文章主要給大家介紹了關(guān)于如何通過一文搞懂正則表達(dá)式基礎(chǔ)語法以及如何應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-09-09
  • 值得收藏的正則表達(dá)式大全

    值得收藏的正則表達(dá)式大全

    這篇文章主要為大家分享了正則表達(dá)式大全,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • 正則表達(dá)式i修飾符(大小寫不敏感)

    正則表達(dá)式i修飾符(大小寫不敏感)

    這篇文章主要介紹了正則表達(dá)式中i修飾符用來規(guī)定正則表達(dá)式的匹配是大小寫不敏感的,需要的朋友可以參考下
    2016-12-12
  • 輕松入門正則表達(dá)式之非貪婪匹配篇詳解

    輕松入門正則表達(dá)式之非貪婪匹配篇詳解

    正則表達(dá)式(regular expression)描述了一種字符串匹配的模式(pattern),可以用來檢查一個串是否含有某種子串、將匹配的子串替換或者從某個串中取出符合某個條件的子串等
    2021-10-10
  • Java正則表達(dá)式驗證是否包含某個字符串的示例代碼

    Java正則表達(dá)式驗證是否包含某個字符串的示例代碼

    作為一名經(jīng)驗豐富的開發(fā)者,我將教會你如何使用Java正則表達(dá)式來驗證是否包含某個字符串,在本文中,我將按照以下步驟來指導(dǎo)你完成操作,感興趣的朋友一起看看吧
    2023-12-12
  • 正則表達(dá)式匹配任意字符(包括換行符)的寫法

    正則表達(dá)式匹配任意字符(包括換行符)的寫法

    在正則中,匹配任意字符,其實寫法網(wǎng)上有很多,但因為各種軟件或程序?qū)懛ú恢С值仍驅(qū)е碌膯栴},大家可以多研究。
    2009-08-08
  • PHP 正則表達(dá)式的幾則使用技巧

    PHP 正則表達(dá)式的幾則使用技巧

    PHP正則表達(dá)式主要用于字符串的模式分割、匹配、查找及替換操作。使用正則表達(dá)式在某些簡單的環(huán)境下可能效率不高,因此如何更好的使用PHP正則表達(dá)式需要綜合考慮
    2009-08-08
  • JScript中正則表達(dá)函數(shù)的說明與應(yīng)用

    JScript中正則表達(dá)函數(shù)的說明與應(yīng)用

    JScript中正則表達(dá)函數(shù)的說明與應(yīng)用...
    2007-04-04

最新評論

尚志市| 井陉县| 遂溪县| 马龙县| 原阳县| 玉树县| 溧阳市| 赫章县| 昌图县| 阳新县| 会泽县| 化州市| 东阳市| 中牟县| 自贡市| 鹤庆县| 襄垣县| 萝北县| 高淳县| 六安市| 望江县| 大冶市| 怀远县| 嘉定区| 宣城市| 富蕴县| 东乌珠穆沁旗| 赤城县| 汝州市| 航空| 德保县| 安新县| 洛扎县| 屏东市| 平山县| 龙南县| 神池县| 鹤庆县| 新竹县| 平乐县| 靖远县|