日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java的Jsoup爬虫

發布時間:2023/12/10 java 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的Jsoup爬虫 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Java的Jsoup爬蟲,爬攜程酒店評分,保存數據庫中

  • 前言
  • 一、Jsoup爬蟲pom
  • 二、邏輯代碼部分
    • 1.首先我們要先確定爬取的東西,這邊我就以攜程的酒店評分為例子。
    • 2.Jsoup進行解析具體要求爬的內容
    • 3.接下來我們就是將爬取的數據存入數據庫中
  • 總結


前言

很多人都知道爬蟲,然后這里就簡單的介紹一下java爬蟲的使用。


好啦,話不多說進入正題!

一、Jsoup爬蟲pom

java使用爬蟲就要用到爬蟲的pom文件

<dependency><groupId>org.jsoup</groupId><artifactId>jsoup</artifactId><version>1.10.2</version></dependency>

想要使用Jsoup進行爬蟲就要使用到上面的pom文件。

二、邏輯代碼部分

1.首先我們要先確定爬取的東西,這邊我就以攜程的酒店評分為例子。


首先先要用代碼去獲得這個頁面的路徑

//1.生成httpclient,相當于該打開一個瀏覽器CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;//2.創建get請求,相當于在瀏覽器地址欄輸入 網址HttpGet request = new HttpGet("https://hotels.ctrip.com/hotels/list?countryId=1&city=2&checkin=2021/08/09&checkout=2021/08/10&optionId=781302&optionType=Hotel&directSearch=0&optionName=%E5%B4%87%E6%98%8E%E9%87%91%E8%8C%82%E5%87%AF%E6%82%A6%E9%85%92%E5%BA%97&display=%E5%B4%87%E6%98%8E%E9%87%91%E8%8C%82%E5%87%AF%E6%82%A6%E9%85%92%E5%BA%97%2C%20%E4%B8%8A%E6%B5%B7%2C%20%E4%B8%AD%E5%9B%BD&crn=1&adult=1&children=0&searchBoxArg=t&travelPurpose=0&ctm_ref=ix_sb_dl&domestic=1&");//設置請求頭,將爬蟲偽裝成瀏覽器request.setHeader("User-Agent","Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36");

這時候就模擬瀏覽器訪問到了這個頁面

2.Jsoup進行解析具體要求爬的內容

我們這邊是要獲取酒店的評分

首先進入頁面f12,然后用鼠標抓取評分,就會有score出來,這就是我們需要爬取的東西,接下來就是用代碼的形式進行爬取。

Document document = Jsoup.parse(html); // //像js一樣,通過標簽獲取title//像js一樣,通過id 獲取元素對象Element postList = document.getElementById("ibu_hotel_container");//像js一樣,通過class 獲取列表下的所有scoreElements postItems = postList.getElementsByClass("score");System.err.println("----------------"+postItems);Elements titleEle = postItems.select(".score span[class='real font-bold']");System.err.println("評分:" + titleEle.text());

這樣我們就成功的將酒店的評分爬取到了。


3.接下來我們就是將爬取的數據存入數據庫中

為了方便觀看,這里也將酒店的名稱也爬取出來

Elements nameItems = postList.getElementsByClass("list-card-title");for (Element nameItem : nameItems) {Elements titleEle01 = nameItem.select(".list-card-title span[class='name font-bold']");System.err.println("酒店名稱:"+titleEle01.text());}

想要將數據存入數據庫,我們首先需要編寫一個pojo對象
為了更加方便直觀的觀看數據,我這里給數據加了id以及time

public class Lottery {@TableId(type = IdType.AUTO)private Integer id;private String name;private String score;@TableField(fill = FieldFill.INSERT)private String time;}

接著就是mapper

@Mapper public interface LotteryMapper extends BaseMapper<Lottery> { }

然后使用通用mapper就可以直接存入數據庫

Document document = Jsoup.parse(html); // //像js一樣,通過標簽獲取title // System.out.println(document.getElementsByTag("title").first());//像js一樣,通過id 獲取文章列表元素對象Element postList = document.getElementById("ibu_hotel_container");//像js一樣,通過class 獲取列表下的所有博客Elements postItems = postList.getElementsByClass("score");//循環處理每篇博客System.err.println("----------------" + postItems);Elements titleEle = postItems.select(".score span[class='real font-bold']");System.err.println("評分:" + titleEle.text());Lottery lottery = new Lottery();lottery.setScore(titleEle.text());Elements nameItems = postList.getElementsByClass("list-card-title");for (Element nameItem : nameItems) {Elements titleEle01 = nameItem.select(".list-card-title span[class='name font-bold']");System.err.println("酒店名稱:" + titleEle01.text()); // Lottery lottery = new Lottery();lottery.setName(titleEle01.text());list.add(lottery);System.out.println("---------------------");}lotteryMapper.insert(lottery);

接下來看一下數據庫中是否有數據

我們這里看一看到有成功爬取的數據。

總結

關于java爬蟲的東西就到這里了,有不足之處還望指出來。

總結

以上是生活随笔為你收集整理的Java的Jsoup爬虫的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。