在以下网址 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)
答案 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”来获取网页,你就可以了。
以下是一些关键步骤 -
从url String -
创建URL对象 URL url = new URL(targetPageURLString);
通过网址打开http连接 -
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
从输入流中读取Web响应 -
InputStream urlStream = urlConnection.getInputStream();
在逐字节读取流的响应后,将此字节数组转换为String。
使用正则表达式,您可以获得所需的信息/内容