① java 正則表達式, 將img 標簽 過濾後只剩下 src屬性,
這其實用不到正則表達式,用了弄不好還出錯,直接用字元串判斷吧,找到src那一長串,然後取出來。
String html="<img alt=\"cv發布會結束後,鐵道部新聞發言人被記者包圍\" src=\"http://img1.cache.netease.com/catchpic/B/B4/.jpg\"/><br/>";
String[] splittedStr = html.split(" ");
String srcStr = null;
for(String str:splittedStr){
if(str.trim().startsWith("src")){
srcStr = str;
}
}
srcStr = srcStr.substring(srcStr.indexOf("\"")+1,srcStr.lastIndexOf("\""));
System.out.println(srcStr);
看了你的補充要求,其實你改一下上面的程序,就很好實現了。
String html="<img alt=\"cv發布會結束後,鐵道部新聞發言人被記者包圍\" src=\"http://img1.cache.netease.com/catchpic/B/B4/.jpg\"/><br/>";
String[] splittedStr = html.split(" ");
String srcStr = null;
for(String str:splittedStr){
if(str.trim().startsWith("src")){
srcStr += str;
}
}
srcStr = "<img " + srcStr + "/>";
System.out.println(srcStr);
② 關於java,過濾html請求的Filter中跳轉頁面的問題。
肯定是邏輯問題
請把你的代碼貼上來,可以分析 下。
if(包含某後綴名){
重定向
}
dofilter(...)
③ java怎樣過濾危險字元
就WEB應用來說,所謂危險的字元一般就是兩種
一個是SQL注入,一個是HTML語法注入
回SQL注入主流的框架答都可以搞定,JDBC永遠都使用preparedstatement就可以防止所有的sql注入,關鍵是用戶輸入都要通過佔位符往裡放,就自動的替換掉了特殊字元了。hibernate等orm框架都會搞定這個問題
HTML語法注入是指用戶輸入的html代碼回顯出來,這樣如果不轉義就可以破壞頁面的結構或者注入腳本。所以現在的網站都不允許用戶直接輸入html代碼了,現在都是一些UBB標簽來完成一些效果。HTML主要最好的解決辦法是在回顯的時候進行轉義,所有的MVC框架或者展示層框架都有HTML轉義的支持,包括struts,spring,volicty等,注意觀察他們用於顯示的標簽
④ 用HTMLParser過濾掉html中所有標簽,留下標題正文等內容,java
現在的網頁,取來title容易,要取到整齊的內源容,就麻煩了。既然是爬蟲,又不可能針對每個頁面都寫一遍。所以,你能解決這問題,是高智商、是值錢的。
<title>和</title>可以認為是標題,用字元串的處理方法即
<content>和</content>不是標準的HTML,不能認為之間的文字就是內容 。雖然<body>和</body>是,可之間的內容也太亂了。
⑤ 我想在java中的JLabel上用html顯示圖片,可是顯示不了,想問下為什麼要怎麼弄代碼如下
JLabel 中的 img 畢竟沒有瀏覽器中的 img 那麼強大,沒有辦法識別本地相對路徑,需要指定為 絕對版路徑,並需權要在前面添加 file:/ 。例如項目路徑為E:/JavaProjects/demo1/ 則代碼如下:
label.setText("<html><imgsrc='file:/E:/JavaProjects/demo1/image103.png'/></html>");
建議將圖片放在 src 下,這樣就可以動態獲取。例如:
URLimageUrl=getClass().getResource("/image103.png");
label.setText("<html><imgsrc='"+imageUrl+"'/></html>");
⑥ 求一個JAVA替換HTML裡面<img>標簽裡面絕對路徑的部分字元串正規則表達式
html.replaceall("<IMG SRC=\\".*?\\"/>","your string")
⑦ java html的正則表達式過濾
|// 以下代碼直接放到任意的javascript中,即可得到結果.
var string = "<td class=\"www\"><a href=\"10078049.html\">第十五章 瘦的也殺!</a></td>" +
"<td class=\"www\"><a href=\"10078050.html\">第十六章 暴力殺伐</a></td></tr>";
string = string.replace(/<(\/\s*)?((\w+:)?\w+)(\w+(\s*=\s*((["'])(\\["'tbnr]|[^\7])*?\7|\w+)|.{0})|\s)*?(\/\s*)?>/ig,"");
alert(string);
⑧ 給一個網頁源碼 ,在java中用正則匹配如何將<img = "xxxxx" ,xxx> 這樣形式的所有標簽過濾掉 求解-_-
Stringhtml="";
//"."代表任意非換行的字元,".*"代表任意多個這樣的字元,後面跟個"?"表示回最小匹配
//這里的空格直答接用空格表示,如果不確定空格數量,最好用s代替空格
Patternpattern=Pattern.compile("<img=".*?",.*?>");
Matchermatcher=pattern.matcher(html);
while(matcher.find()){
//你的代碼,這里是輸出
System.out.println(matcher.group());
}
⑨ java截取html代碼
BufferedReader br = new BufferedReader(new InputStreamReader(fileStream));
while(br.ready()){
String line=br.readLine();
if(line.indexOf("td ")>0 ){
// System.out.println(line);
str += line+",";
}
str=str.toLowerCase().replace('<td align="center" >',"")
.replace("</td>", "")
System.out.println(str);
這是一個事例,你應該看的明白吧!
還有你要再加一個tr的判斷,把版str放到List里就可以了
就這么權簡單的解決了,你要存到資料庫里,再解析list就好了
⑩ java中幾種解析html的工具
HTML分析是一個比較復雜的工作,Java世界主要有幾款比較方便的分析工具:
1.Jsoup
Jsoup是一個集強大和便利於一體的HTML解析工具。它方便的地方是,可以用於支持用jQuery中css selector的方式選取元素,這對於熟悉js的開發者來說基本沒有學習成本。
String content = "blabla";
Document doc = JSoup.parse(content);
Elements links = doc.select("a[href]");
Jsoup還支持白名單過濾機制,對於網站防止XSS攻擊也是很好的。
2.HtmlParser
HtmlParser的功能比較完備,也挺靈活,但談不上方便。這個項目很久沒有維護了,最新版本是2.1。HtmlParser的核心元素是Node,對應一個HTML標簽,支持getChildren()等樹狀遍歷方式。HtmlParser另外一個核心元素是NodeFilter,通過實現NodeFilter介面,可以對頁面元素進行篩選。這里有一篇HtmlParser的使用文章:使用 HttpClient 和 HtmlParser 實現簡易爬蟲。
3.Apache tika
tika是專為抽取而生的工具,還支持PDF、Zip甚至是JavaClass。使用tika分析HTML,需要自己定義一個抽取內容的Handler並繼承org.xml.sax.helpers.DefaultHandler,解析方式就是xml標準的方式。crawler4j中就使用了tika作為解析工具。SAX這種流式的解析方式對於分析大文件很有用,我個人倒是認為對於解析html意義不是很大。
4.HtmlCleaner與XPath
HtmlCleaner最大的優點是:支持XPath的方式選取元素。XPath是一門在XML中查找信息的語言,也可以用於抽取HTML元素。XPath與CSS Selector大部分功能都是重合的,但是CSS Selector專門針對HTML,寫法更簡潔,而XPath則是通用的標准,可以精確到屬性值。XPath有一定的學習成本,但是對經常需要編寫爬蟲的人來說,這點投入絕對是值得的。