0

我的任务是找到给定链接的实际新闻稿链接。比如说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 回答 4

4

我认为没有任何确定的方法可以实现这一目标。您可以制作一组所有可能的关键字,如“press”、“release”和“pr”等,并匹配 url 以使用正则表达式等查找关键字。这将取决于您的关键字集的全面性。

于 2010-08-12T14:30:37.460 回答
3

看看今天的网站。将您看到的任何链接缓存到文件中。明天看现场;任何新链接都是新闻文章的链接,也许?你会得到不正确的结果 - 一次 - 任何时候他们改变你周围的页面的其余部分。

您知道,您可以只使用提供的RSS提要,该提要旨在满足您的要求。

于 2010-08-12T14:31:02.840 回答
2

查看 HTML 源代码。在普通的网络浏览器中打开页面,右键单击并选择View Source。您必须在 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"));
    }
}

到目前为止,这正是您想要的:

/pr/library/2010/07/28safari.html
/pr/library/2010/07/27imac.html
/pr/library/2010/07/27macpro.html
/pr/library/2010/07/27display.html
/pr/library/2010/07/26iphone.html
/pr/library/2010/07/23iphonestatement.html
/pr/library/2010/07/20results.html
/pr/library/2010/07/19ipad.html
/pr/library/2010/07/19alert_results.html
/pr/library/2010/07/02appleletter.html
/pr/library/2010/06/28iphone.html
/pr/library/2010/06/23iphonestatement.html
/pr/library/2010/06/22ipad.html
/pr/library/2010/06/16iphone.html
/pr/library/2010/06/15applestoreapp.html
/pr/library/2010/06/15macmini.html
/pr/library/2010/06/07iphone.html
/pr/library/2010/06/07iads.html
/pr/library/2010/06/07safari.html

要了解有关 CSS 选择器的更多信息,请阅读Jsoup 手册W3 CSS 选择器规范

于 2010-08-13T19:12:40.023 回答
2

您需要找到一些定义“新闻稿链接”的属性。对于该站点,指向“/pr/library/”表示它是 Apple 新闻稿。

于 2010-08-12T14:31:41.420 回答