有些網(wǎng)頁的內(nèi)容想取到本地使用,但是一行一行復(fù)制又太麻煩,本著重復(fù)勞動均能機械化的思想升敲,那就想辦法爬一下袍镀。
注:在進行網(wǎng)頁爬取時,我們需要遵守網(wǎng)站的robots.txt協(xié)議冻晤,避免對網(wǎng)站造成過大的訪問壓力苇羡。同時,我們也需要注意數(shù)據(jù)的版權(quán)問題鼻弧,尊重原創(chuàng)作品和作者的權(quán)益设江。
爬取的思路無非就是先獲取url+參數(shù),再看返回的數(shù)據(jù)結(jié)構(gòu)(html或者json或者其他格式)攘轩,再通過解析得到自己想要的數(shù)據(jù)叉存。如果返回json就很簡單了,直接json轉(zhuǎn)換就可以了度帮,以下以爬取簡書首頁文章標題為例歼捏,提供兩種解析返回html的辦法。
- 方式1:采用hutool的正則匹配工具類
- 方式2:使用jsoup進行dom解析
1笨篷、依賴引入
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.32</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.4</version>
</dependency>
2瞳秽、爬取代碼實現(xiàn)
public class GrabDemo {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(GrabDemo.class);
//需要爬取的url,有時候可能需要帶參數(shù)或者是post請求率翅,可以通過F12查看瀏覽器進行分析
String grabUrl = "http://www.reibang.com/";
String content = HttpUtil.get(grabUrl);
//方式一练俐,通過正則直接匹配
logger.info("開始使用第一種方式獲取title");
String reg = "<a class=\"title\" target=\"_blank\" href=\"(.*?)\">(.*?)</a>";
List<String> titles = ReUtil.findAll(reg, content, 2);
titles.forEach(System.out::println);
logger.info("使用第一種方式獲取title結(jié)束,共獲取到{}條記錄",titles.size());
logger.info("-----------------------我是分割線----------------");
//方式二冕臭,通過jsoup解析dom
logger.info("開始使用第二種方式獲取title");
Document document = Jsoup.parse(content);
Elements elements = document.getElementsByAttributeValue("class","title").select("a");
List<String> titles2 = elements.stream().map(Element::text).toList();
titles2.forEach(System.out::println);
logger.info("使用第二種方式獲取title結(jié)束腺晾,共獲取到{}條記錄",titles2.size());
}
}
3、爬取結(jié)果
10:40:21.139 [main] INFO com.mos.simple.http.GrabDemo -- 開始使用第一種方式獲取title
節(jié)儉
抖音增粉技巧全解析:順應(yīng)趨勢巧用抖音直播辜贵,增加有效粉絲粘性
跳水冠軍也愛古風(fēng)悯蝉?全紅嬋簪花漢服妝造引熱議!
南京之行01 | 瞻園的景色真美
10:40:21.158 [main] INFO com.mos.simple.http.GrabDemo -- 使用第一種方式獲取title結(jié)束托慨,共獲取到4條記錄
10:40:21.160 [main] INFO com.mos.simple.http.GrabDemo -- -----------------------我是分割線----------------
10:40:21.161 [main] INFO com.mos.simple.http.GrabDemo -- 開始使用第二種方式獲取title
節(jié)儉
抖音增粉技巧全解析:順應(yīng)趨勢巧用抖音直播鼻由,增加有效粉絲粘性
跳水冠軍也愛古風(fēng)?全紅嬋簪花漢服妝造引熱議榴芳!
南京之行01 | 瞻園的景色真美
10:40:21.284 [main] INFO com.mos.simple.http.GrabDemo -- 使用第二種方式獲取title結(jié)束嗡靡,共獲取到4條記錄
4、其他說明
- 畢竟爬取別人數(shù)據(jù)可能會給別人造成困擾窟感,建議學(xué)習(xí)使用讨彼。
- 有些網(wǎng)站有反扒機制,比如頻繁請求出驗證碼柿祈、IP限制等等哈误,見招拆招即可哩至。