2016-08-23 2 views
2

Я работаю в Java и с помощью Jsoup. Я хочу найти Time из приведенного ниже URL-адреса. Я попытался с ними, но не смог его получить. Время лежит в теге span, но под id(timestamp--time timeago) Я пытаюсь с ним, но я не знаю, в чем проблема.Как найти время с определенного URL-адреса с помощью Jsoup?

Document doc; 
      Elements lin = null; 
      String url = "http://www.dawn.com/news/1277133/this-is-how-pakistanis-around-the-country-are-celebrating-independence-day"; 
      try { 
       doc = Jsoup.connect(url).timeout(20*1000).userAgent("Chrome").get(); 
       lin = doc.getElementsByClass("span.timestamp--time timeago"); 
//    System.out.println(lin); 
      } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      int i=0; 
      for(Element l :lin){ 
       System.out.println(""+i+ " : " +l.text()); 
       i++; 
      } 

ответ

1

Заменить

lin = doc.getElementsByClass("span.timestamp--time timeago"); 

с

lin = doc.select("span.timestamp--time.timeago"); 

Выход:

0 : Aug 14, 2016 04:29pm 
1 : Aug 14, 2016 12:39pm 
2 : Aug 14, 2016 01:34pm 
3 : Aug 14, 2016 01:37pm 
4 : Aug 14, 2016 04:19pm 
5 : Aug 15, 2016 01:11am 
6 : Aug 15, 2016 08:49am 
7 : Aug 16, 2016 12:32pm 

Из формулировки в APIgetElementsByClass принимает только одно имя класса. Таким образом, в этом случае lin = doc.getElementsByClass("timestamp--time"); дает тот же результат, но если вы хотите выбрать несколько классов, чем select, это лучший выбор.

+0

В исходном коде ' 24 августа 2016 года '' timeago' не является другим классом, так как вы использовали IN 'span.timestamp - time.timeago' ([timeago] Работайте отлично с вашим предложением), но '<несколько пробелов>'. Должны ли мы решить, что если после имени класса есть пробел, это будет имя класса? Поскольку вы использовали этот 'doc.select (" span.timestamp - time.timeago "); вместо этого' doc.select ("span.timestamp - time timeago"); ' – Humty

+0

' timeago' IS is different класс (хотя в файле css нет определения, его можно использовать так же, как мы его используем, чтобы его можно было выбрать), пробелы являются атрибутами атрибута 'class' в html. В chrome вы можете использовать инструменты разработчика (Ctrl + Shift * I), а когда вы выбираете нужный вам узел на вкладке «Элементы», хром покажет вам зависание на странице с селектором css (разделенным точками). Пожалуйста, отметьте этот ответ как решение, если оно решит ваш вопрос. –

+0

О да. Я добрался. Конечно. Принято. – Humty

1

Ваш селектор CSS неверен. Используйте вместо этого:

lin = doc.select("span.timestamp--time.timeago"); 
+0

Почему не этот 'doc.select (" span.timestamp - time timeago ");'? Является ли 'timeago' другим именем класса? – Humty

+0

Ваш запрос CSS ищет тег с именем timeago под span с этим классом. Если вы хотите выполнить поиск по нескольким классам: .class1.class2.class3 –

Смежные вопросы