当前位置: 首页 > 面试题库 >

使用JAVA解析网站HTML

羊舌炯
2023-03-14
问题内容

我想解析一个简单的网站,并从该网站中抓取信息。

我曾经用DocumentBuilderFactory解析XML文件,但我尝试对html文件做同样的事情,但是它总是陷入无限循环。

    URL url = new URL("http://www.deneme.com");
    URLConnection uc = url.openConnection();

    InputStreamReader input = new InputStreamReader(uc.getInputStream());
    BufferedReader in = new BufferedReader(input);
    String inputLine;

     FileWriter outFile = new FileWriter("orhancan");
     PrintWriter out = new PrintWriter(outFile);

    while ((inputLine = in.readLine()) != null) {
        out.println(inputLine);
    }

    in.close();
    out.close();

    File fXmlFile = new File("orhancan");
    DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
    DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
    Document doc = dBuilder.parse(fXmlFile);


    NodeList prelist = doc.getElementsByTagName("body");
    System.out.println(prelist.getLength());

有什么问题吗?还是有任何更简单的方法可以从网站中获取给定html标签的数据


问题答案:

有一种更简单的方法可以做到这一点。我建议使用JSoup。使用JSoup,您可以执行以下操作

Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");

或者,如果您想要身体:

Elements body = doc.select("body");

或者,如果您需要所有链接:

Elements links = doc.select("body a");

您不再需要获得连接或处理流。简单。如果您曾经使用过jQuery,那么它与之非常相似。



 类似资料:
  • 问题内容: 我想用Java登录到一个网站。我使用的是org.apache.http,我已经写了 尽管我仍然无法登录,但它正确发送了我测试过的帖子表格。我要登录的网站是http://www.xtratime.org/forum/ 关于此的任何想法或是否有其他方法? 问题答案: 在提交页面之前,请对密码进行编码()。您应该在代码中执行相同的操作。 该属性的值与您的代码()不匹配。您应该将发布请求发送到

  • 问题内容: 编程新手,并弄清楚了如何使用Selenium导航到我需要去的地方。我想立即解析数据,但不确定从哪里开始。有人可以握我的手几秒钟,并朝正确的方向指点我吗? 任何帮助表示赞赏- 问题答案: 假设您在要解析的页面上,Selenium将源HTML存储在驱动程序的属性中。这样,你会加载到如下:

  • 问题内容: 下面的代码没有从网址中获取任何HTML 我知道URLConnection方法openConnection()和URL类方法openStream(),但我不想使用这些方法。我只想知道为什么我不使用Socket类获得任何输入,但是我却使用其他方法获得了输入。 问题答案: 您没有发送任何请求。HTTP是一个请求-响应协议:您需要发送一个请求,告知Web服务器要检索的URL,然后它将向您发送该

  • 我试图登录使用领英J汤,我已经尝试了几种方法,但总是遇到错误403,我哪里出错了? 测试一 错误控制台 组织。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=403,URL=https://www.linkedin.com在org。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:590)。jsoup

  • 我在使用jsoup(Java)解析html文档时遇到了一个问题。我正在分析的HTML具有以下格式: 我想在两个“hr”标记之间隔离HTML文本。我正在尝试以下代码: 系统出来println(对象); 但是ArrayList没有包含我想要的内容,我不知道如何解决它。(我是否可以将“hr”标记转换为“hr”文本“/hr”标记)?

  • 问题内容: 我正在编写一个Java程序来登录学校用来发布成绩的网站。 这是登录表单的网址:https : //ma- andover.myfollett.com/aspen/logon.do 这是登录表单的HTML: 我正在尝试使用以下代码登录: 该程序将填充用户名框,然后单击“登录”按钮,但不会填充密码框。我可以进行哪些更改以使该程序正常运行?我怀疑密码框的“ type =’password’”