Java-阅读网站而不是源代码
好的,我重新定义了我的上一个程序。。。这是:Java-阅读网站而不是源代码,java,io,Java,Io,好的,我重新定义了我的上一个程序。。。这是: import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; public class asp { public static void main(String[] args) { try { URL game = new U
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
public class asp {
public static void main(String[] args) {
try {
URL game = new URL("http://localhost/mystikrpg/post.php?players");
URLConnection connection = game.openConnection();
BufferedReader in = new BufferedReader(new
InputStreamReader(connection.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
in.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
问题出在哪里?当我运行它时。。。我得到了整页。。。甚至源代码,如html标记的开头,一直到主体和html标记的结尾
当真的。。。我希望它的输出是1。。。。
我能看到它的唯一方法是从
和
中拆分字符串
嗯。帮助?当您请求一个页面时,您将获得源代码。这是意料之中的正常现象。您必须解析此源以提取内容。当您请求页面时,您将获得源。这是意料之中的正常现象。您必须解析此源以提取内容。当您检索网页时,服务器发送给您的是HTML标记之间的所有内容,等等 我认为您需要的是一个HTML解析器,它可以让您从网页中提取内容。首先,按照当前的操作检索网页,然后通过解析器运行输出,指示解析器提取所需的部分 以下是一些HTML解析器:
- -本文展示了如何使用Java的Swing库进行一些HTML解析
- -本文展示了如何使用Java的Swing库进行一些HTML解析
post.php
,并且能够让它返回您所需要的内容,而无需HTML标记(一种web服务),否则您必须解析它返回的HTML文档
使用a,正则表达式对此不是很可靠
使用HTMLParser解析
标记的粗略片段:
(确保包括htmlparser.jar
)
这将给出一个
字符串,其中包含“Web图像视频地图新闻书籍Gmail more…”[省略],在您的情况下,它将返回一个字符串,其中包含“1”,可能包含空格(如您的粘贴箱所示),您必须修剪它,然后将其转换为一个数字
结束语:使用(并且仅使用)以下代码创建一个post.php
,如果您不需要该脚本来执行任何其他返回此结果的操作,您的生活将变得更加轻松
<?php
$number = 1; // or whatever login to get it.
echo $number;
?>
除非您能够控制post.php
,并且能够让它返回您所需要的内容,而无需HTML标记(web服务),否则您必须解析它返回的HTML文档
使用a,正则表达式对此不是很可靠
使用HTMLParser解析
标记的粗略片段:
(确保包括htmlparser.jar
)
这将给出一个字符串,其中包含“Web图像视频地图新闻书籍Gmail more…”[省略],在您的情况下,它将返回一个字符串,其中包含“1”,可能包含空格(如您的粘贴箱所示),您必须修剪它,然后将其转换为一个数字
结束语:使用(并且仅使用)以下代码创建一个post.php
,如果您不需要该脚本来执行任何其他返回此结果的操作,您的生活将变得更加轻松
<?php
$number = 1; // or whatever login to get it.
echo $number;
?>
从HTML格式的响应中删除内容令人不快,并且会使代码变得脆弱
也许你正在尝试谈论的webapp/网站有其他方式来传递响应;e、 g.采用XML或JSON格式
以另一种格式获取响应可能需要为HTTP请求设置适当的ACCEPT标头、向查询添加一些额外参数或更改路径
- 查看webapp/网站的web API文档,查看是否有提及这一点李>
- 或者查看webapp源代码。。。如果你有
<> LI>或者如果这是您的代码,请考虑将其更改为支持XML、JSON或甚至是特定文本响应。(如果您采用这种方式,最好仔细阅读媒体类型,并在回答的“内容类型”标题中设置适当的媒体类型。)
从HTML格式的响应中删除内容是令人不快的,并且会使代码变得脆弱
也许你正在尝试谈论的webapp/网站有其他方式来传递响应;e、 g.采用XML或JSON格式
以另一种格式获取响应可能需要为HTTP请求设置适当的ACCEPT标头、向查询添加一些额外参数或更改路径
- 查看webapp/网站的web API文档,查看是否有提及这一点李>
- 或者查看webapp源代码。。。如果你有
<> LI>或者如果这是您的代码,请考虑将其更改为支持XML、JSON或甚至是特定文本响应。(如果您采用这种方式,最好仔细阅读媒体类型,并在回答的“内容类型”标题中设置适当的媒体类型。)
问题出在哪里?当我运行它时。。。我得到了整页。。。甚至源代码,如html标记的开头,一直到主体和html标记的结尾
这就是HTML页面的基本含义;这就是你得到的。现在,如果您不想手动解析内容,请使用HTML解析器。这里有但我会推荐,一个最优雅的可用库(干净漂亮的API,非详细的元素迭代,等等)。演示:
看,妈妈,没有手
附言:我必须说,我同意这里的一些其他答案,
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
public class JsoupDemo {
public static void main(String[] args) throws Exception {
URL url = new URL("http://localhost/mystikrpg/post.php?players");
Document doc = Jsoup.parse(url, 3*1000);
String text = doc.body().text();
System.out.println(text); // outputs 1
}
}