java抓取网页内容(入门经典案例——一下获取DOM元素的入门案例分享)
优采云 发布时间: 2022-01-22 03:19java抓取网页内容(入门经典案例——一下获取DOM元素的入门案例分享)
, 等待
属性,对应html中的属性,例如div元素中的class、id等
2.常用 API
首先介绍一下获取DOM元素的api,这些都属于Element类中定义的方法。
getElementById(String id):通过id获取元素,非常准确。
getElementsByTag(String tag):根据标签名获取元素的集合,例如:
<p>document.getElementsByTag("p")</p>
会得到所有
标签的元素方便我们进一步从中抓取想要的文字。
getElementsByClass(String className):根据类名获取元素的集合,例如:
<p>document.getElementsByClass("item")</p>
将获取类为 item 的所有元素。一般页面的列表项都会指定同一个类,所以这种方法方便我们直接获取指定的列表内容。
getElementsByAttribute(String key):根据属性名获取元素的集合,如:
<p>document.getElementsByAttribute("href")</p>
这样我们就可以获取到所有带有链接属性的元素,方便跳转和爬取本页面涉及的其他页面。
获取到DOM元素后,我们还需要获取元素的属性、文本等数据,如下:
attr(String key):获取元素中某个属性的值。例如:element.attr("class"),可以获取当前元素的class属性值。
attributes:获取元素的所有属性。我们可以遍历或以其他方式处理所有属性。
id、className、classNames:获取元素的id值、类值,以及所有类值的集合。这些方法的最底层是attr(String key)方法,其实是一个方便我们使用的快速实现。
text:获取元素的全文内容。我们不必手动遍历当前元素的所有子节点来获取文本信息,该方法会直接将所有文本拼接在一起并返回。
例如
好了,说了这么多,是时候来一场真正的战斗了。我们以爬虫入门的经典案例和豆瓣电影Top250页面为例,看看Jsoup是如何使用的。
因为只是一个例子,所以我们的目标比较简单,就是爬取这个电影名字的页面。
首先我们直接F12查看页面源码,我们会发现电影名是一个带有类title的标签,如图:
虽然有多个电影名称,但其他名称将由 / 符号分隔。于是想法来了,只要我们在这个页面上获取所有class值为title的元素,并过滤掉带有/的文本,就可以了。代码显示如下:
<p>public static void printMovieName throws IOException {
// 豆瓣电影Top250
String url = "https://movie.douban.com/top250";
// 获取页面
Document document = Jsoup.connect(url).get;
// 根据class获取元素集合
Elements titles = document.getElementsByClass("title");
int index = 1;
for (Element title : titles) {
String text = title.text;
// 过滤掉电影的其他名称
if (!text.contains("/")) {
System.out.println("No." + index + " " + text);
index++;
}
}
}</p>
输出如下:
总结
怎么样,用Jsoup写爬虫是不是很简单?当然,基于这个简单的例子,我们可以实现更复杂的逻辑,比如:
对于精通 Java 语言的程序员来说,这些逻辑很容易实现。这就是为什么,我认为Java程序员如果使用自己的语言来开发爬虫,效率会更高。因为日常的搬砖操作让我们可以更熟练的处理爬取的数据。爬虫只是获取数据的一种方式,也是数据处理和使用中非常重要的一环。
提醒:我们必须合法使用爬行动物。通过网站域名+robots.txt查看爬虫协议,判断是否可以使用爬虫爬取信息,如:. 同时,切记不要爬取敏感信息,牟取暴利!
好了,今天大叔的分享就到这里。公众号后台回复“爬虫”即可获取项目源码地址。看完文章,抓紧时间试一试吧。
问你能有多少烦恼,开源项目解决万千烦恼,下期见!