原文地址:xeblog.cn/articles/27html
Jsoup官網:jsoup.org/java
jsoup 是一款Java 的HTML解析器,可直接解析某個URL地址、HTML文本內容。它提供了一套很是省力的API,可經過DOM,CSS以及相似於jQuery的操做方法來取出和操做數據。node
瀏覽器打開愛奇藝高分電影排行榜的地址 www.iqiyi.com/dianying_ne…,按 F12
審查元素。瀏覽器
仔細觀察後能夠知道 data-seq
屬性是用於區分排行榜類型的,值爲1表示是熱播榜,值爲2表示是高分榜。bash
查看高分榜的 <div>
標籤,裏面存在一個 <ul>
標籤,<ul>
標籤中的每個 <li>
標籤都是一部電影的信息。url
在 <li>
標籤裏經過獲取一個ClassName爲 site-title_score
的 <div>
標籤就能夠獲得電影的評分、電影的名字、電影的視頻地址等信息。spa
各個信息的獲取方式:code
<div>
內的 <span>
標籤的文本內容。<div>
內的 <a>
標籤的文本內容。<div>
內的 <a>
標籤的 href
屬性的值。添加 Maven
依賴cdn
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.11.3</version>
</dependency>
複製代碼
package cn.xeblog.jsoup;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import java.io.IOException;
/** * 爬取愛奇藝高分電影排行榜數據 * * @author anlingyi */
public class HighScoreMoviesByIQIYI {
/** * 網址 */
private static final String URL = "https://www.iqiyi.com/dianying_new/i_list_paihangbang.html?type=2";
/** * 請求超時時間,15秒 */
private static final int TIMEOUT = 15000;
public static void main(String[] args) throws IOException {
// Get請求獲取指定的網址內容,並將內容解析爲一個文檔對象,設置請求超時時間
Document document = Jsoup.connect(URL).timeout(TIMEOUT).get();
// 獲取高分榜的元數據,先經過data-seq屬性的值(高分榜值爲2)來定位元素節點,再經過ClassName精確查找出須要的數據
Elements metaData = document.getElementsByAttributeValue("data-seq", "2")
// 第0個元素是Tab導航,因此從第二個元素開始查找
.get(1)
// 獲取ClassName爲site-title_score的元素,能夠獲取到電影評分、電影名、視頻地址
.getElementsByClass("site-title_score");
System.out.println("電影名\t\t\t電影評分\t\t\t視頻地址");
// 遍歷元數據
for (Element element : metaData) {
// 經過<span>標籤能夠獲取電影評分
String score = element.select("span").text();
// 經過<a>標籤能夠獲取電影名和視頻地址
Element data = element.selectFirst("a");
// 電影名
String name = data.text();
// 視頻地址
String url = data.attr("href");
System.out.println(name + "\t\t\t" + score + "\t\t\t" + url);
}
}
}
複製代碼