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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > java >内容正文

java

Java的Jsoup爬虫

發(fā)布時(shí)間:2023/12/10 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java的Jsoup爬虫 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Java的Jsoup爬蟲,爬攜程酒店評(píng)分,保存數(shù)據(jù)庫(kù)中

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


前言

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


好啦,話不多說進(jìn)入正題!

一、Jsoup爬蟲pom

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

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

想要使用Jsoup進(jìn)行爬蟲就要使用到上面的pom文件。

二、邏輯代碼部分

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


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

//1.生成httpclient,相當(dāng)于該打開一個(gè)瀏覽器CloseableHttpClient httpClient = HttpClients.createDefault();CloseableHttpResponse response = null;//2.創(chuàng)建get請(qǐng)求,相當(dāng)于在瀏覽器地址欄輸入 網(wǎng)址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&");//設(shè)置請(qǐng)求頭,將爬蟲偽裝成瀏覽器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");

這時(shí)候就模擬瀏覽器訪問到了這個(gè)頁面

2.Jsoup進(jìn)行解析具體要求爬的內(nèi)容

我們這邊是要獲取酒店的評(píng)分

首先進(jìn)入頁面f12,然后用鼠標(biāo)抓取評(píng)分,就會(huì)有score出來,這就是我們需要爬取的東西,接下來就是用代碼的形式進(jìn)行爬取。

Document document = Jsoup.parse(html); // //像js一樣,通過標(biāo)簽獲取title//像js一樣,通過id 獲取元素對(duì)象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("評(píng)分:" + titleEle.text());

這樣我們就成功的將酒店的評(píng)分爬取到了。


3.接下來我們就是將爬取的數(shù)據(jù)存入數(shù)據(jù)庫(kù)中

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

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());}

想要將數(shù)據(jù)存入數(shù)據(jù)庫(kù),我們首先需要編寫一個(gè)pojo對(duì)象
為了更加方便直觀的觀看數(shù)據(jù),我這里給數(shù)據(jù)加了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就可以直接存入數(shù)據(jù)庫(kù)

Document document = Jsoup.parse(html); // //像js一樣,通過標(biāo)簽獲取title // System.out.println(document.getElementsByTag("title").first());//像js一樣,通過id 獲取文章列表元素對(duì)象Element postList = document.getElementById("ibu_hotel_container");//像js一樣,通過class 獲取列表下的所有博客Elements postItems = postList.getElementsByClass("score");//循環(huán)處理每篇博客System.err.println("----------------" + postItems);Elements titleEle = postItems.select(".score span[class='real font-bold']");System.err.println("評(píng)分:" + 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);

接下來看一下數(shù)據(jù)庫(kù)中是否有數(shù)據(jù)

我們這里看一看到有成功爬取的數(shù)據(jù)。

總結(jié)

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

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。