1. jsoup概念
jsoup是一款Java的HTML解析器,可直接解析某个URL地址、HTML文本内容。
2. jsoup的主要功能
1. 从一个URL,文件或字符串中解析HTML;
2. 使用DOM或CSS选择器来查找、取出数据;
3. 可操作HTML元素、属性、文本;
注:jsoup是基于MIT协议发布的,可放心使用于商业项目。
3. maven依赖
<dependency> <groupId>org.jsoup</groupId> <artifactId>jsoup</artifactId> <version>1.7.2</version> </dependency> |
4. 代码实现
4.1 目标代码
<ul class="audioList fontYaHei"> <li> <div class="divider"></div> <a class="clearfix js-play-data audio-list-item" href="/250837/2600807142873448454" title="是什么时候开始,我们互相不再联系(文/小隐儿)" data-band="250837" data-rid="16443181897825536" data-uid="4830397" data-user-name="姚小明『听说』无言" data-radio-name="朝九·晚五" data-title="是什么时候开始,我们互相不再联系(文/小隐儿)" data-duration="604" data-url="http://cdn5.lizhi.fm/audio/2017/05/09/2600807142873448454_hd.mp3" data-id="2600807142873448454" data-cover="http://cdnimg103.lizhi.fm/radio_cover/2017/03/05/2588752303353985028.jpg"> <i class="leftPlayBtn js-play-btn" style="display:block;" title="" οnclick="play(this);return false;"></i> </a> </li> </ul> <ul class="audioList fontYaHei"> <li> <div class="divider"></div> <a class="clearfix js-play-data audio-list-item" href="/250837/2600807142873448454" title="是什么时候开始,我们互相不再联系(文/小隐儿)" data-band="250837" data-rid="16443181897825536" data-uid="4830397" data-user-name="姚小明『听说』无言" data-radio-name="朝九·晚五" data-title="是什么时候开始,我们互相不再联系(文/小隐儿)" data-duration="604" data-url="http://cdn5.lizhi.fm/audio/2017/05/09/2600807142873448454_hd.mp3" data-id="2600807142873448454" data-cover="http://cdnimg103.lizhi.fm/radio_cover/2017/03/05/2588752303353985028.jpg"> <i class="leftPlayBtn js-play-btn" style="display:block;" title="" οnclick="play(this);return false;"></i> </a> </li> </ul> |
4.2 代码实现
import java.io.IOException; import org.jsoup.Jsoup; import org.jsoup.nodes.Document; import org.jsoup.nodes.Element; import org.jsoup.select.Elements; /** * ClassName: TestJsoup * @Description: http://www.open-open.com/jsoup/selector-syntax.htm * @author limh * @date 2017年5月15日 */ public class TestJsoup { public Document getDocument (String url){ try { return Jsoup.connect(url).get(); } catch (IOException e) { e.printStackTrace(); } return null; } public static void main(String[] args) { TestJsoup t = new TestJsoup(); Document doc = t.getDocument("http://www.lizhi.fm/193491/"); //Document doc = t.getDocument("http://www.lizhi.fm/250837/"); // 获取目标HTML代码 //Elements elements1 = doc.select("[class=audioList fontYaHei]"); //找出第一个class为.audioList.fontYaHei的ul Element elements1 = doc.select("ul.audioList.fontYaHei").first(); // Elements elements2 = elements1.select("li"); Elements elements3 = elements2.select("a:contains(【直播】)"); //查找包含【直播】文本的a元素 String relHref = elements3.attr("data-url"); //获取a元素的data-url属性 System.out.println(relHref); } } |