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>

URLを取得するにはどうすればよいですか

http://s3-media3.ak.yelpcdn.com/bphoto/rCz-uF_qwqyb5Nnq74JeVQ/60s.jpg 

この文字列から?

string.indexOf()について考えましたが、URLの前後の文字数が異なる可能性があるため、このサブ文字列がどのインデックスで始まるかわかりません。これは面倒な場合があります。最善のアプローチはありますか?

4

2 に答える 2

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);
于 2012-12-27T03:21:36.297 に答える
2

HTMLパーサーを使用したくない場合は、正規表現を作成し、正規表現パッケージを使用して、必要なデータのみを照合することができます。

何かのようなもの、

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 に答える