我有一个字符串,如:
<div class="photo-box biz-photo-box pb-60s">
<a href="/biz/the-kerry-piper-willowbrook">
<img class="photo-img" alt="" height="60" src="http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg" width="60">
</a>
如何检索网址
http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg
来自这个String?
我想过 string.indexOf()但是url之前和之后的字符数可能会有所不同,因此我不知道这个子字符串在哪个索引处开始,这可能会很混乱。有什么最好的方法吗?
答案 0 :(得分:4)
使用Jsoup从 URL ,文件或字符串中抓取/解析HTML并使用其jQuery 喜欢选择器语法。
String htmlStr="<div class=\"photo-box biz-photo-box pb-60s\">"
+ "<a href=\"/biz/the-kerry-piper-willowbrook\">"
+ "<img class=\"photo-img\" alt=\"\" height=\"60\" src=\"http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg\" width=\"60\">"
+ "</a>";
org.jsoup.nodes.Document doc=org.jsoup.Jsoup.parse(htmlStr);
String src=doc.select("img").attr("src");
System.out.println(src);
答案 1 :(得分:2)
如果您不想使用HTML解析器,则可以构造正则表达式并使用regex package来匹配您需要的唯一数据。
类似的东西,
Pattern pattern = Pattern.compile("<img.*?src=\"([^\"]+)\"",Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(data);
while(m.find()) {
srcUrl = m.group(1));
}