如何使用java从网页获取值

时间:2016-03-16 05:41:35

标签: java html5 css3

在以下网址 http://www.manta.com/c/mx4s4sw/bowflex-academy 中,我想获得 SIC代码。这是我的代码和错误:

public static void main(String[] args) {
    try {
        Document doc = Jsoup.connect("http://www.manta.com/c/mx4s4sw/bowflex-academy").ignoreHttpErrors(true).get();
        String textContents = doc.select("itemprop").first().text();
    } catch (IOException e) {
        e.printStackTrace();
    }
  }
}

Exception in thread "main" java.lang.NullPointerException at com.inndata.connection.GoogleScraperDemo.main(GoogleScraperDemo.java:22)

2 个答案:

答案 0 :(得分:0)

选择器"itemprop"不正确。

文档中的SIC代码位于HTML块中,如下所示:

  <tr>
      <th class="text-left" style="width:30%;">SIC Code</th>
      <td rel="sicDetails"><span itemprop="isicV4">7991</span>, Physical Fitness Facilities</td>
  </tr>

选择器应该类似于

"span[itemprop='isicV4']"

我没有测试过这个。此外,只要网站所有者更改该行的布局或itemprop值,这将会中断。你可以更好地寻找字符串SIC Code,然后在下面搜索,但任何这样的搜索都可能对网站更改很脆弱,除了事后的反应,你没有什么可以做的。

答案 1 :(得分:0)

网站,你试图刮不允许刮。如果您使用第三方工具,如Jsoup,HtmlUnit,那么它会将其检测为bot。

所以尝试使用java的内置库“java.net”来获取网页,你就可以了。

以下是一些关键步骤 -

  1. 从url String -

    创建URL对象

    URL url = new URL(targetPageURLString);

  2. 通过网址打开http连接 -

    HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();

  3. 从输入流中读取Web响应 -

    InputStream urlStream = urlConnection.getInputStream();

  4. 在逐字节读取流的响应后,将此字节数组转换为String。

  5. 使用正则表达式,您可以获得所需的信息/内容