【问题标题】:Can not get all the data when crawling a website爬取网站时无法获取所有数据
【发布时间】:2015-09-06 14:55:39
【问题描述】:

我一直在尝试抓取一个网站并从中获取一些数据。我要爬的网页是这个:http://www.oddsportal.com/soccer/england/premier-league/everton-chelsea-4tRin4kn/ 我对获取页面中间表格中的数字特别感兴趣。我尝试通过打印 html 代码以最基本的方式对其进行爬网,然后我的想法是在 html 中搜索数字并将它们保存在文件中。问题是我在 html 中的任何地方都找不到这些数字。即使我在浏览器中打开它并单击显示源代码,我仍然找不到它们。这是我正在使用的代码。

  private static String getUrlSource(String url) throws IOException {
        URL yahoo = new URL(url);
        URLConnection yc = yahoo.openConnection();
        BufferedReader in = new BufferedReader(new InputStreamReader(
                yc.getInputStream(), "UTF-8"));
        String inputLine;
        StringBuilder a = new StringBuilder();
        while ((inputLine = in.readLine()) != null)
            a.append(inputLine);
        in.close();

        return a.toString();
    }

任何关于如何从表中获取数据的建议将不胜感激!

【问题讨论】:

    标签: java html web-crawler webpage


    【解决方案1】:

    要么:

    1. 运行页面上加载数据的 JS,或者
    2. 查看页面发出的网络请求,看看是否可以直接请求数据。

    请注意,#2 可能违反网站的 TOS。

    【讨论】:

      【解决方案2】:

      使用谷歌浏览器右键单击表格并选择“检查元素”,数字实际上在 html 中。要从页面中提取某些数字,使用 Jsoup 之类的库通常很有用,这样您就可以根据 html 页面的结构提取文本。

      【讨论】:

      • 不太正确;检查元素检查的是 DOM,而不是原始请求发送的 HTML。表格内容是动态加载的,这意味着在页面的 DOM-ready JS 触发并实际加载表格之前,它们不可用。 JSoup 没有帮助。
      • 这是否意味着无法以某种方式使用 java 读取它们?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多