一篇文章教會(huì)你使用java爬取想要的資源
說明
簡(jiǎn)介: 你還在為想要的資源而獲取不到而煩勞嗎?你還在為你不會(huì)python而爬取不到資源而煩勞嗎?沒關(guān)系,看完我這一篇文章你就會(huì)學(xué)會(huì)用java爬取資源,從此不會(huì)因此而煩勞,下面我會(huì)以爬取京東物品來(lái)進(jìn)行實(shí)戰(zhàn)演示?。?!
方法摘要
| 方法 | 方法說明 |
| adoptNode(Node source) | 試圖把另一文檔中的節(jié)點(diǎn)采用到此文檔。 |
| createAttribute(String name) | 創(chuàng)建指定名稱的Attr |
| createCDATASection(String data) | 創(chuàng)建其值為指定字符串的 CDATASection 節(jié)點(diǎn)。 |
| createComment(String data) | 創(chuàng)建給定指定字符串的 Comment 節(jié)點(diǎn)。 |
| createDocumentFragment() | 創(chuàng)建空 DocumentFragment 對(duì)象。 |
| createElement(String tagName) | 創(chuàng)建指定類型的元素。 |
| createElementNS(String namespaceURI, String qualifiedName) | 創(chuàng)建給定的限定名稱和名稱空間 URI 的元素。 |
| createEntityReference(String name) | 創(chuàng)建 EntityReference 對(duì)象。 |
| createProcessingInstruction(String target, String data) | 創(chuàng)建給定指定名稱和數(shù)據(jù)字符串的 ProcessingInstruction 節(jié)點(diǎn)。 |
| createTextNode(String data) | 創(chuàng)建給定指定字符串的 Text 節(jié)點(diǎn)。 |
| getDoctype() | 與此文檔相關(guān)的文檔類型聲明(參見 DocumentType)。 |
| getDocumentElement() | 這是一種便捷屬性,該屬性允許直接訪問文檔的文檔元素的子節(jié)點(diǎn)。 |
| getDocumentURI() | 文檔的位置,如果未定義或 Document 是使用 DOMImplementation.createDocument 創(chuàng)建的,則為 null。 |
| getDomConfig() | 調(diào)用 Document.normalizeDocument() 時(shí)使用的配置。 |
| getElementsByTagName(String tagname) | 按文檔順序返回包含在文檔中且具有給定標(biāo)記名稱的所有 Element 的 NodeList。 |
| getElementById(String elementId) | 返回具有帶給定值的 ID 屬性的 Element。 |
| getElementsByTagNameNS(String namespaceURI, String localName) | 以文檔順序返回具有給定本地名稱和名稱空間 URI 的所有 Elements 的 NodeList。 |
| getImplementation() | 處理此文檔的 DOMImplementation 對(duì)象。 |
| getInputEncoding() | 指定解析時(shí)此文檔使用的編碼的屬性。 |
| getStrictErrorChecking() | 指定是否強(qiáng)制執(zhí)行錯(cuò)誤檢查的屬性。 |
| getXmlEncoding() | 作為 XML 聲明的一部分,指定此文檔編碼的屬性。 |
| getXmlStandalone() | 作為 XML 聲明的一部分,指定此文檔是否為獨(dú)立文檔的屬性。 |
| getXmlVersion() | 作為 XML 聲明 的一部分指定此文檔版本號(hào)的屬性。 |
| importNode(Node importedNode, boolean deep) | 從另一文檔向此文檔導(dǎo)入節(jié)點(diǎn),而不改變或移除原始文檔中的源節(jié)點(diǎn);此方法創(chuàng)建源節(jié)點(diǎn)的一個(gè)新副本。 |
| normalizeDocument() | 此方法的行為如同使文檔通過一個(gè)保存和加載的過程,而將其置為 “normal(標(biāo)準(zhǔn))” 形式。 |
| renameNode(Node n, String namespaceURI, String qualifiedName) | 重命名 ELEMENT_NODE 或 ATTRIBUTE_NODE 類型的現(xiàn)有節(jié)點(diǎn)。 |
| setDocumentURI(String documentURI) | //文檔的位置,如果未定義或 Document 是使用 DOMImplementation.createDocument 創(chuàng)建的,則為 null。 |
| setStrictErrorChecking(boolean strictErrorChecking) | 指定是否強(qiáng)制執(zhí)行錯(cuò)誤檢查的屬性。 |
| setXmlStandalone(boolean xmlStandalone) | 作為 XML 聲明 的一部分指定此文檔是否是單獨(dú)的的屬性。 |
| setXmlVersion(String xmlVersion) | 作為 XML 聲明 的一部分指定此文檔版本號(hào)的屬性。 |
常用的Element節(jié)點(diǎn)方法
得到文檔的根節(jié)點(diǎn).
Element element = document.getRootElement();
得到某節(jié)點(diǎn)的單個(gè)子節(jié)點(diǎn)
Element element =root.element("node");
得到某節(jié)點(diǎn)下的所有子節(jié)點(diǎn)并進(jìn)行遍歷
List nodes = rootElm.elements("node");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element element = (Element) it.next();
}
在某個(gè)節(jié)點(diǎn)下添加子節(jié)點(diǎn)
Element element = newElement.addElement("node");
刪除某個(gè)節(jié)點(diǎn)
Element element = parentElement.remove(childElement);
設(shè)置節(jié)點(diǎn)的文字
ageElm.setText("20");
添加一個(gè)CDATA節(jié)點(diǎn)
Element element = infoElement.addElement("content");
element .addCDATA(diary.getContent());
實(shí)戰(zhàn):爬取B站番劇
Maven
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
代碼
步驟
1.打開控制臺(tái)檢查網(wǎng)頁(yè)的結(jié)構(gòu)

2.逐步分析哪些內(nèi)容在哪個(gè)標(biāo)簽下,找到該內(nèi)容的class或id
比如此處我們要找到 bang_itme 這個(gè)class,然后在找它下面的其他class或者id
3.
3.完整代碼如下
public class HtmlParseUtil {
public static void main(String[] args) throws IOException {
new HtmlParseUtil().myAnime("柯南");
}
public void myAnime(String keyWorks) throws IOException {
String encode = URLEncoder.encode(keyWorks, "UTF-8");
String url = "https://search.bilibili.com/all?keyword="+encode+"&from_source=web_search"; // 搜索地址
Document document = Jsoup.parse(new URL(url), 30000);
Elements elements = document.getElementsByClass("bangumi-item");
for (Element element : elements) {
Elements link = element.getElementsByClass("left-img");
System.out.println(link.attr("href").split("http://")[1]);
System.out.println(element.getElementsByClass("title").attr("title"));
System.out.println(element.getElementsByClass("desc").text());
}
}
}
4.執(zhí)行結(jié)果

到此這篇關(guān)于一篇文章教會(huì)你使用java爬取想要的資源的文章就介紹到這了,更多相關(guān)java爬取資源內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- JAVA使用爬蟲抓取網(wǎng)站網(wǎng)頁(yè)內(nèi)容的方法
- 零基礎(chǔ)寫Java知乎爬蟲之抓取知乎答案
- 零基礎(chǔ)寫Java知乎爬蟲之將抓取的內(nèi)容存儲(chǔ)到本地
- Java爬蟲實(shí)戰(zhàn)抓取一個(gè)網(wǎng)站上的全部鏈接
- Java爬蟲抓取視頻網(wǎng)站下載鏈接
- java爬蟲Gecco工具抓取新聞實(shí)例
- java正則表達(dá)式簡(jiǎn)單使用和網(wǎng)頁(yè)爬蟲的制作代碼
- 基于Java HttpClient和Htmlparser實(shí)現(xiàn)網(wǎng)絡(luò)爬蟲代碼
- java實(shí)現(xiàn)簡(jiǎn)單的爬蟲之今日頭條
- Java實(shí)現(xiàn)的爬蟲抓取圖片并保存操作示例
相關(guān)文章
Springboot+Thymeleaf+Jpa實(shí)現(xiàn)登錄功能(附源碼)
最近有學(xué)習(xí)到關(guān)于Springboot+Thymeleaf+Jpa的綜合運(yùn)用知識(shí),因此想寫一個(gè)簡(jiǎn)單的登錄界面來(lái)嘗試一下,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05
OpenFeign設(shè)置header的三種方式總結(jié)
在微服務(wù)間使用Feign進(jìn)行遠(yuǎn)程調(diào)用時(shí)需要在header中添加信息,下面這篇文章主要給大家介紹了關(guān)于OpenFeign設(shè)置header的三種方式,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
解決Eclipse Tomcat OutOfMemoryError:PermGen space的問題
今天小編就為大家分享一篇關(guān)于解決Eclipse Tomcat OutOfMemoryError:PermGen space的問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧2018-12-12
Elasticsearch Join字段類型簡(jiǎn)單快速上手教程
這篇文章主要為大家介紹了Elasticsearch Join字段類型簡(jiǎn)單快速上手教程詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
Spring aop 如何通過獲取代理對(duì)象實(shí)現(xiàn)事務(wù)切換
這篇文章主要介紹了Spring aop 如何通過獲取代理對(duì)象實(shí)現(xiàn)事務(wù)切換的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07
Spring?Cloud?Hystrix原理與注意事項(xiàng)小結(jié)
本文介紹了Hystrix的基本概念、工作原理以及其在實(shí)際開發(fā)中的應(yīng)用方式,通過對(duì)Hystrix的深入學(xué)習(xí),開發(fā)者可以在分布式系統(tǒng)中實(shí)現(xiàn)精細(xì)的錯(cuò)誤處理機(jī)制,并能夠及時(shí)響應(yīng)系統(tǒng)中的異常,避免服務(wù)的連鎖崩潰,感興趣的朋友一起看看吧2025-03-03
JDK源碼分析之String、StringBuilder和StringBuffer
這篇文章主要給大家介紹了關(guān)于JDK源碼分析之String、StringBuilder和StringBuffer的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用jdk具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05
如何使用JDBC連接數(shù)據(jù)庫(kù)并執(zhí)行SQL語(yǔ)句
JDBC是Java數(shù)據(jù)庫(kù)連接的縮寫,是Java程序與數(shù)據(jù)庫(kù)進(jìn)行交互的標(biāo)準(zhǔn)API。JDBC主要包括Java.sql和javax.sql兩個(gè)包,通過DriverManager獲取數(shù)據(jù)庫(kù)連接對(duì)象Connection,并通過Statement或PreparedStatement執(zhí)行SQL語(yǔ)句2023-04-04

