【问题标题】:Scraping text using source Java - no text of reviews使用源 Java 抓取文本 - 没有评论文本
【发布时间】:2013-12-08 22:22:43
【问题描述】:

我正在尝试制作一个自动化的 java 程序,它将获取某个网页的源代码,但是我能够通过自动化程序获得的源代码与我在右键单击网页。 现在,根据我在互联网上找到的代码,这是我的解决方案,它不起作用。我需要获取评论的文本,下面的代码没有返回它。

public static void main(String[] args) throws IOException {
    URL url = new URL(
            "http://www.tripadvisor.com/ShowUserReviews-g60745-d481776-r184086024-Prudential_Center-Boston_Massachusetts.html#REVIEWS");
    URLConnection spoof = url.openConnection();
    spoof.setRequestProperty("User-Agent",
            "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT 5.0;    H010818)");
    BufferedReader in = new BufferedReader(new InputStreamReader(
            spoof.getInputStream()));
    String strLine = "";
    String finalHTML = "";
    // Loop through every line in the source
    while ((strLine = in.readLine()) != null) {
        finalHTML += strLine+"\n";
    }
    System.out.println(finalHTML);
}

}

【问题讨论】:

  • 我怀疑您在 JS 启动并更改页面内容之前获得了原始 HTML 代码。也许尝试使用一些 WebDriver 而不是 URLConnection?
  • 你能更好地解释什么不起作用以及实际发生了什么吗?
  • 我得到了部分 html 代码,但没有明确的评论文本,也没有指向它们的链接,这正是我需要的

标签: java html web urlconnection


【解决方案1】:

您通常无法检索页面的“源代码”,除非该页面是 1990 年代的纯静态 HTML 页面。页面的源代码将由 HTML(或 XML+XSLT)加上 CSS,以及在页面加载后修改 DOM 的 Javascript 组成。

此外,页面加载后,DOM 可以继续修改以响应事件,并且可以继续通过 Ajax 甚至原始套接字从一台或多台服务器获取数据。因此,没有“源代码”之类的东西,除非你指的是最初传输的 HTML、CSS、Javascript 和图像。

【讨论】:

  • 如果评论是通过 Ajax 加载的,您需要弄清楚这一点,确定评论的实际位置(URL)并自行下载。这可能很简单,也可能不简单,但需要分析您作为初始 GET 请求的一部分下载的 HTML/JS。
猜你喜欢
  • 1970-01-01
  • 2019-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-16
相关资源
最近更新 更多