JAVA獲取html網頁中的圖片src內容
有很多時候會有這樣的需求,獲取一個網頁中圖片的路徑,在Java中,可以使用Pattern類、Matcher類,配合正則表示式來獲取一個字串中需要的特定內容。
首先來看一下網頁中一個<img>標籤所處的位置,例如:String content =“<html>...<div><img alt ='xxx' src='yyy'><img alt='xxx' src='mmm'></div></html>”,其中img標籤可能的格式為 <img>或<IMG>,標籤結束方式可能為<img ... > 或者 <img ... />或者<img ...></img> ;為了程式碼有更好的魯棒性,所以在匹配文字的時候,這些情況都需要考慮到。
我的具體思路就是,先獲取到img 標籤的內容,然後對獲取到的內容進行二次匹配,從而獲取到一個圖片地址列表。這裡邊最核心的地方就在於兩次匹配的正則表示式。以獲取上邊的content中的地址為例:
String content ="<html>...<div><img alt ='xxx' src='yyy'><img alt='xxx' src='mmm'></div></html>" List<String> srcList = new ArrayList<String>(); //用來儲存獲取到的圖片地址 Pattern p = Pattern.compile("<(img|IMG)(.*?)(>|></img>|/>)");//匹配字串中的img標籤 Matcher matcher = p.matcher(content); boolean hasPic = matcher.find(); if(hasPic == true)//判斷是否含有圖片 { while(hasPic) //如果含有圖片,那麼持續進行查詢,直到匹配不到 { String group = matcher.group(2);//獲取第二個分組的內容,也就是 (.*?)匹配到的 Pattern srcText = Pattern.compile("(src|SRC)=(\"|\')(.*?)(\"|\')");//匹配圖片的地址 Matcher matcher2 = srcText.matcher(group); if( matcher2.find() ) { srcList.add( matcher2.group(3) );//把獲取到的圖片地址新增到列表中 } hasPic = matcher.find();//判斷是否還有img標籤 } } System.out.println("匹配到的內容:"+srcList);
在這裡面最為核心的部分就是正則表示式的書寫,因為它是負責把我們的思想轉化為一個具體規則去匹配字串。在第一次匹配img標籤的時候,正則表示式是“<(img|IMG)(.*?)(>|></img>|/>)” ,其中( )是用來分組的,也就是把匹配到的內容分成幾個部分。在使用Matcher類來獲取匹配到的分組資料時,匹配到的整個字串預設為第0組,所以自己定義的組別要從第一組算起。
其中 <(img|IMG) 部分是第1組,可以匹配到img標籤的開始 。
(.*?) 是第2組,可以匹配到img標籤內的其他內容,它的含義就是匹配以任意字元開始的一個字串。?表示非貪婪模式匹配,預設是貪婪模式,貪婪模式會匹配到最長的內容,也就是在img標籤開始和結束的中間包含多個img標籤。
(>|></img>|/>) 部分是第3組,用來匹配img標籤的結束。
相關推薦
JAVA獲取html網頁中的圖片src內容
有很多時候會有這樣的需求,獲取一個網頁中圖片的路徑,在Java中,可以使用Pattern類、Matcher類,配合正則表示式來獲取一個字串中需要的特定內容。 首先來看一下網頁中一個<img>
Java 獲取Html文字中的img標籤下src中的內容
/** * 得到網頁中圖片的地址 * @param htmlStr html字串 * @return List<String> */ private List<String> getImgStr(String
獲取html網頁中的body部分內容
1.匯入htmlparser.jar架包 2./** * 獲取HTML頁面中BODY標籤的內容 * @param inputHTML * * @return void [返回型別說明] * @throws [違例型別] [
java去除html程式碼中含有的html、js、css標籤,獲取文字內容
現在在做政府網站,網站裡有很多公開資訊和政務諮詢的新聞,現在需要做新聞的RSS訂閱功能,其中有一項是需要處理文章頁的內容。我們後臺新增編輯文章使用的是編輯器,文章內容會帶有很多html標籤
java獲取html頁面代碼裏面的圖片的地址的集合
gpo ring util regex ati port 鏈接 get .com package com.blue.common.util;import java.util.ArrayList;import java.util.HashSet;import java.uti
zbb20180827 java獲取html內容
orm pid ace string trace static != nec class package com.zbb.test; import java.io.BufferedReader;import java.io.BufferedWriter;import jav
java通過HttpServletRequest獲取post請求中的body內容
在java web應用中,我們如何獲取post請求body中的內容?以及需要注意的問題。 通常利用request獲取引數可以直接通過req.getParameter(name)的方式獲取url上面或者ajax data提交上來的引數。但是body是沒有名字
根據地址獲取html頁面中的內容
private string GetHtml(string url) { // 獲取檔案 System.Text.Encoding en = System.Text.Encoding.GetEncoding("utf-8")
java獲取請求url中的內容
HttpServletRequest httpRequest = (HttpServletRequest) request;String strBackUrl = "http://" + reques
關於java 獲取 html select標籤 下拉框 option 文字內容 隱藏域
在HTML中從多選下拉框中提取已選中選項的文字內容到後臺,被這個問題難倒了。 demo.jsp檔案<select id="selecttype" name"type"> <option value="" selected="selected">
用Java程式碼從網頁中獲取資料(示例程式碼)
package com.mashensoft.net; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java
java 通過HttpServletRequest獲取post請求中的body內容
/** * 獲取POST請求中Body引數 * @param request * @return 字串 */ public String getParm(HttpServletRequest request) {
正則表示式獲取HTML標記中的內容(C#)
//=====================Begin1======================== //試驗字串string strTmp =string.Empty; //正則表示式string tmpStr =string.Empty;
logo.ico在html網頁中的實現
元素 美國 其他 對戰 cnblogs img 多人 load mar <!doctype html><html> <head> <meta charset="utf-8"/> <title>英雄聯盟_百度百科
gif圖再html網頁中只播放一次
ges http hot 技術分享 log .cn png web web前端 ui給的gif圖放在網頁上只播放一次,怎麽也找不出來解決辦法是不是感覺自己的技術不行了,就在此時此刻不要懷疑自己,堂堂的web前端工程師不要慫。 聽我的首先打開Photoshop,然後把這個gi
網頁中圖片顯示方向與實際圖片方向不一致
服務 拍攝 blog 解決 log 照片 -o 不一致 oss 圖片為手機拍攝的照片,可能存在方向問題,exif.js可以解決。 參考 http://blog.csdn.net/cdnight/article/details/46457241 每張圖片在獲取到後都用exif
在HTML網頁中引入Bootstrap前端框架
ble 需要 otto nta 在線 cal meta target initial Bootstrap百度百科介紹: Bootstrap,來自 Twitter,是目前很受歡迎的前端框架。Bootstrap 是基於 HTML、CSS、JAVASC
html 網頁背景圖片根據屏幕大小CSS自動縮放
val apple back clas 交互 dde fun 效果 而且 https://blog.csdn.net/coslay/article/details/47109281 騰訊微博和QQ空間的登錄背景圖片是根據訪客的屏幕大小自動縮放的,但是好像是用JQuery代碼
網頁中圖片預載入的原理
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Java: 獲取jar包中某個類的serialVersionUID(序列版本id)
2018.11.02 文章目錄 前言 方法 前言 在《序列化及Java Serializable序列化介面》一文,我介紹了一個case:一個已上線的版本中包含了未定義serialVersionUID序