3

我有一个字符串,例如:

<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.indexOf()但是 url 之前和之后的字符数可能会有所不同,因此我不知道这个子字符串从哪个索引开始,这可能会很混乱。有什么最好的方法吗?

4

2 回答 2

4

使用JsoupURL文件字符串中抓取/解析 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);
于 2012-12-27T03:21:36.297 回答
2

如果您不想使用 HTML 解析器,您可以构造一个正则表达式并使用regex 包来匹配您需要的唯一数据。

就像是,

Pattern pattern = Pattern.compile("<img.*?src=\"([^\"]+)\"",Pattern.CASE_INSENSITIVE);
Matcher m = pattern.matcher(data);
while(m.find()) {
    srcUrl = m.group(1));
} 
于 2012-12-27T03:32:45.900 回答