Чтобы определить ссылки только на страницы пресс-релиза - PullRequest
0 голосов
/ 12 августа 2010

Моя задача - найти ссылки на пресс-релизы по данной ссылке. Например, http://www.apple.com/pr/.

Мой инструмент должен находить только ссылки на пресс-релизы по указанному выше URL-адресу, исключая другие рекламные ссылки, ссылки на вкладки (или любые другие), найденные на этом сайте.

Разработанная ниже программа разработана, и в результате получаются все ссылки, представленные на данной веб-странице.

Как я могу изменить приведенную ниже программу, чтобы найти только ссылки на пресс-релиз по указанному URL? Кроме того, я хочу, чтобы программа была универсальной, чтобы она могла определять ссылки на пресс-релизы по любым URL-адресам пресс-релизов, если таковые имеются.

import java.io.*;
import java.net.URL;
import java.net.URLConnection;
import java.sql.*;
import org.jsoup.nodes.Document;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Element; 
public class linksfind{
public static void main(String[] args) {
    try{
         URL url = new URL("http://www.apple.com/pr/");
         Document document = Jsoup.parse(url, 1000); // Can also take an URL.
         for (Element element : document.getElementsByTag("a")) {
             System.out.println(element.attr("href"));}
             }catch (Exception ex){ex.printStackTrace();}
}
}

Ответы [ 4 ]

4 голосов
/ 12 августа 2010

Я не думаю, что был бы какой-то определенный способ достичь этого.Вы можете создать набор всех возможных ключевых слов, таких как «press», «release», «pr» и т. Д., И сопоставить URL-адреса, чтобы найти ключевые слова с помощью регулярных выражений и т. Д. Правильность этого будет зависеть от того, насколько всеобъемлющим является ваш набор ключевых слов.1001 *

3 голосов
/ 12 августа 2010

Посмотрите на сайт сегодня. Кэшируйте в файл все ссылки, которые вы видели. Посмотри на сайт завтра; какие-нибудь новые ссылки - это ссылки на новостные статьи, может быть? Вы получите неправильные результаты - один раз - каждый раз, когда они изменяют остальную часть страницы вокруг вас.

Вы могли бы, вы знаете, просто использовать предоставленный канал RSS , предназначенный для выполнения именно того, что вы просите.

2 голосов
/ 13 августа 2010

Посмотрите на исходный код HTML.Откройте страницу в обычном веб-браузере, щелкните правой кнопкой мыши и выберите Просмотр источника .Вы должны найти путь в дереве документа HTML, чтобы однозначно идентифицировать эти ссылки.

Все они размещены в элементе <ul class="stories"> внутри элемента <div id="releases">.Тогда подходящим селектором CSS будет "div#releases ul.stories a".

. Вот как это должно выглядеть:

public static void main(String... args) throws Exception {
    URL url = new URL("http://www.apple.com/pr/");
    Document document = Jsoup.parse(url, 3000);
    for (Element element : document.select("div#releases ul.stories a")) {
        System.out.println(element.attr("href"));
    }
}

На данный момент это именно то, что вам нужно:

Чтобы узнать больше о CSS-селекторах, прочитайте руководство Jsoup *1017* и W3 CSS-селектор спецификации .

2 голосов
/ 12 августа 2010

Вам нужно найти какой-нибудь атрибут, который определяет «ссылку для пресс-релиза». В случае с этим сайтом указание на «/ pr / library /» означает, что это пресс-релиз Apple.

...