教你使用java的爬虫爬取你想要的资源
Posted Talisman丶
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了教你使用java的爬虫爬取你想要的资源相关的知识,希望对你有一定的参考价值。
说明
简介: 你还在为想要的资源而获取不到而烦劳吗?你还在为你不会python而爬取不到资源而烦劳吗?没关系,看完我这一篇文章你就会学会用java爬取资源,从此不会因此而烦劳,下面我会以爬取京东物品来进行实战演示!!!
方法摘要
方法 | 方法说明 |
---|---|
adoptNode(Node source) | 试图把另一文档中的节点采用到此文档。 |
createAttribute(String name) | 创建指定名称的Attr |
createCDATASection(String data) | 创建其值为指定字符串的 CDATASection 节点。 |
createComment(String data) | 创建给定指定字符串的 Comment 节点。 |
createDocumentFragment() | 创建空 DocumentFragment 对象。 |
createElement(String tagName) | 创建指定类型的元素。 |
createElementNS(String namespaceURI, String qualifiedName) | 创建给定的限定名称和名称空间 URI 的元素。 |
createEntityReference(String name) | 创建 EntityReference 对象。 |
createProcessingInstruction(String target, String data) | 创建给定指定名称和数据字符串的 ProcessingInstruction 节点。 |
createTextNode(String data) | 创建给定指定字符串的 Text 节点。 |
getDoctype() | 与此文档相关的文档类型声明(参见 DocumentType)。 |
getDocumentElement() | 这是一种便捷属性,该属性允许直接访问文档的文档元素的子节点。 |
getDocumentURI() | 文档的位置,如果未定义或 Document 是使用 DOMImplementation.createDocument 创建的,则为 null。 |
getDomConfig() | 调用 Document.normalizeDocument() 时使用的配置。 |
getElementsByTagName(String tagname) | 按文档顺序返回包含在文档中且具有给定标记名称的所有 Element 的 NodeList。 |
getElementById(String elementId) | 返回具有带给定值的 ID 属性的 Element。 |
getElementsByTagNameNS(String namespaceURI, String localName) | 以文档顺序返回具有给定本地名称和名称空间 URI 的所有 Elements 的 NodeList。 |
getImplementation() | 处理此文档的 DOMImplementation 对象。 |
getInputEncoding() | 指定解析时此文档使用的编码的属性。 |
getStrictErrorChecking() | 指定是否强制执行错误检查的属性。 |
getXmlEncoding() | 作为 XML 声明的一部分,指定此文档编码的属性。 |
getXmlStandalone() | 作为 XML 声明的一部分,指定此文档是否为独立文档的属性。 |
getXmlVersion() | 作为 XML 声明 的一部分指定此文档版本号的属性。 |
importNode(Node importedNode, boolean deep) | 从另一文档向此文档导入节点,而不改变或移除原始文档中的源节点;此方法创建源节点的一个新副本。 |
normalizeDocument() | 此方法的行为如同使文档通过一个保存和加载的过程,而将其置为 “normal(标准)” 形式。 |
renameNode(Node n, String namespaceURI, String qualifiedName) | 重命名 ELEMENT_NODE 或 ATTRIBUTE_NODE 类型的现有节点。 |
setDocumentURI(String documentURI) | //文档的位置,如果未定义或 Document 是使用 DOMImplementation.createDocument 创建的,则为 null。 |
setStrictErrorChecking(boolean strictErrorChecking) | 指定是否强制执行错误检查的属性。 |
setXmlStandalone(boolean xmlStandalone) | 作为 XML 声明 的一部分指定此文档是否是单独的的属性。 |
setXmlVersion(String xmlVersion) | 作为 XML 声明 的一部分指定此文档版本号的属性。 |
常用的Element节点方法
得到文档的根节点.
Element element = document.getRootElement();
得到某节点的单个子节点
Element element =root.element("node");
得到某节点下的所有子节点并进行遍历
List nodes = rootElm.elements("node");
for (Iterator it = nodes.iterator(); it.hasNext();) {
Element element = (Element) it.next();
}
在某个节点下添加子节点
Element element = newElement.addElement("node");
删除某个节点
Element element = parentElement.remove(childElement);
设置节点的文字
ageElm.setText("20");
添加一个CDATA节点
Element element = infoElement.addElement("content");
element .addCDATA(diary.getContent());
实战:爬取B站番剧
Maven
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.13.1</version>
</dependency>
代码
步骤
- 打开控制台检查网页的结构
- 逐步分析哪些内容在哪个标签下,找到该内容的class或id
比如此处我们要找到 bang_itme 这个class,然后在找它下面的其他class或者id
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("//")[1]);
System.out.println(element.getElementsByClass("title").attr("title"));
System.out.println(element.getElementsByClass("desc").text());
}
}
}
- 执行结果
推荐阅读
以上是关于教你使用java的爬虫爬取你想要的资源的主要内容,如果未能解决你的问题,请参考以下文章
Python 爬虫+可视化,手把手教你使用 Python 爬取 JD 网站并且可视化展示
合肥工业大学python大作业之爬虫(手把手教你爬取微博热搜)