我从网站抓取数据,我需要有人来解释收到的代码 - JSoup

时间:2016-04-18 17:01:14

标签: android html android-studio jsoup

我从Stackoverflow获得了这个代码,当我做我要求的时候,我很难理解它是如何做到的。我正在抓一个网站上的某些单词。只是想知道是否有人可以告诉我它究竟是如何选择这些词语的?特别是在doc.select部分之后

String text = doc.select("#post-15 > div > table:nth-child(6) > tbody > tr:nth-child(2) > td:nth-child(2) > table:not(:last-of-type)").text();

2 个答案:

答案 0 :(得分:2)

.select(cssQuery)接受一个css查询,如果找不到该查询后面的对象,则返回一个为空的Elements对象。在这里找出文档的范围:(https://jsoup.org/apidocs/

这是思考css选择器正在做什么的一种方式(在查询中从左到右开始)

.text()然后返回找到的节点的文本元素。

这里的css rules是:

  • A> B - 找到子元素B
  • selector:nth-​​child(#) - 元素类型的第n个子项
  • selector:last-of-type -
  • 中该元素的最后一个子类型
  • 父选择器:not(x) - represents the negation of whatever x
    is

答案 1 :(得分:2)

您正面临着一个CSS选择器。可以在documentation中找到关于Jsoup CSS选择器语法的概述。以下是一些线索:

#post-15 > div > table:nth-child(6) > 
tbody > tr:nth-child(2) > td:nth-child(2) > 
table:not(:last-of-type)
  • #id将选择ID为id
  • 的元素
  • a > b将选择带有标记为
  • 的元素的标记b的元素
  • parent:nth-child(2)是一个所谓的伪选择器。它选择其父
  • 的第二个子元素
  • parent:last-of-type也是伪选择器。它选择该类型的最后一个元素