【问题标题】:To identify links regarding the Press Release pages alone仅识别有关新闻稿页面的链接
【发布时间】:2011-03-28 23:28:25
【问题描述】:

我的任务是找到给定链接的实际新闻稿链接。比如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();}
}
}

【问题讨论】:

    标签: java html screen-scraping jsoup


    【解决方案1】:

    我认为没有任何明确的方法可以实现这一目标。您可以创建一组所有可能的关键字,例如“press”、“release”和“pr”等,并匹配 url 以使用 regex 等查找关键字。这样做的正确性取决于您的关键字集的综合程度。

    【讨论】:

    • 您的意思是在网站中找到的url中搜索关键字并选择它们?
    • 是的。关键字或关键字组合
    • 你没有利用 Jsoup 的力量。
    【解决方案2】:

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

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

    【讨论】:

    • 我正在为非 rss 提要页面分配此任务...因此在寻找解决方案方面存在问题...欢迎您提出宝贵的建议...如果有的话...
    • @Anand,好吧,在这种情况下,创建您自己的网站,该网站已备份 RSS 提要,然后解析该网站。如果选择同时编写知识检索引擎和推理引擎,解决方案会更加困难。
    【解决方案3】:

    查看 HTML 源代码。在普通的网络浏览器中打开页面,右键单击并选择查看源代码。您必须在 HTML 文档树中找到一个路径来唯一标识这些链接。

    它们都位于<div id="releases"> 元素内的<ul class="stories"> 元素中。相应的 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 manualW3 CSS selector spec

    【讨论】:

    • 但这适用于所有网页吗??????请指教。我需要一些通用的解决方案。不适合 apple.com...
    • HTML 解析永远不可能是通用的。您最多可以使 Java 代码动态化,以便最终只在某个配置文件中映射链接和选择器。 P.S:一个问号确实足以表示一个问题。
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-12
      • 2016-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多