Jsoup爬取愛奇藝高分電影排行榜數據

原文地址:xeblog.cn/articles/27html

Jsoup簡介

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);
        }
    }
}
複製代碼

爬取結果

相關文章
相關標籤/搜索