[英]How to get a value from a webpage using java
在以下 URL 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)
选择器"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
,然后在下方搜索,但任何此类抓取都可能对网站更改很脆弱,除了事后做出反应之外,您无能为力。
您尝试抓取的网站不允许抓取。 如果您使用 Jsoup、HtmlUnit 等第三方工具,那么它会将其检测为 bot。
所以尝试使用java的内置库“java.net”来获取网页,你很高兴抓取。
以下是继续进行的一些关键步骤 -
从 url 字符串创建 URL 对象 -
URL url = new URL(targetPageURLString);
通过 URL 打开 http 连接 -
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
从输入流读取 Web 响应 -
InputStream urlStream = urlConnection.getInputStream();
从流中逐字节读取响应后,将此字节数组转换为字符串。
使用正则表达式,您可以获得所需的信息/内容
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.