java抓取网页内容(入门经典案例——一下获取DOM元素的入门案例分享)

优采云 发布时间: 2022-01-22 03:19

  java抓取网页内容(入门经典案例——一下获取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查看爬虫协议,判断是否可以使用爬虫爬取信息,如:. 同时,切记不要爬取敏感信息,牟取暴利!

  好了,今天大叔的分享就到这里。公众号后台回复“爬虫”即可获取项目源码地址。看完文章,抓紧时间试一试吧。

  问你能有多少烦恼,开源项目解决万千烦恼,下期见!

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线