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解析

当您检索网页时,服务器发送给您的是HTML标记之间的所有内容,等等

我认为您需要的是一个HTML解析器,它可以让您从网页中提取内容。首先,按照当前的操作检索网页,然后通过解析器运行输出,指示解析器提取所需的部分

以下是一些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
    }
}