首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Jsoup从页面获取元素

使用Jsoup从页面获取元素
EN

Stack Overflow用户
提问于 2016-02-10 18:38:48
回答 1查看 208关注 0票数 1

我想登录到https网站使用Jsoup,并进行随后的调用3-4服务,以检查一项工作是否已经完成。

代码语言:javascript
复制
    public class JSOUPTester {
    public static void main(String[] args){
        System.out.println("Inside the JSOUP testing method");
        String url = "https://someloginpage.com";
    try{
        Document doc = Jsoup.connect(url).get();
        String S = doc.getElementById("username").text();// LINE 1
        String S1 = doc.getElementById("password").text();// LINE 2
    }catch(Exception e){
         e.printStackTrace();
     }
   }
}

例外:

代码语言:javascript
复制
java.lang.NullPointerException
JSOUPTester.main(JSOUPTester.java:7)

我已经签入了chrome,这些页面包含了id "username“和"password”的元素。上面的行正在抛出NullPointerException。我在这里做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-10 22:10:17

很多事情都可能是造成这种情况的原因。如果没有URL,我就无法确定,但以下是一些线索:

  • 一些页面通过AJAX加载它们的内容。can#t处理这个问题,因为它不解释任何JavaScript。您可以通过下载带有卷曲的页面,或者在浏览器中下载JavaScript上的萝卜来检查这一点。要处理使用JavaScript呈现自身的页面,可以使用Selenium或HTMLUnit之类的工具。
  • 您试图加载的页面的The服务器可能需要一个cookie。你需要看看网络流量,发生冲浪,加载该页面。在chrome或firefox中,您可以在网络选项卡的developer tools中看到这一点。
  • 对于不同的客户端,for服务器可能有不同的响应。这就是为什么您可能必须将UserAgent字符串设置为JSoup http请求中已知的浏览器。 Jsoup.connect("url").userAgent("Mozilla/5.0")
  • 对于下载的html源,JSoup的大小限制为1MB。如果需要,可以关闭它或将其设置为更大的值。 Jsoup.connect("url").maxBodySize(0)
  • Jsoup可能会超时请求。要更改超时行为,请使用 Jsoup.connect("url").timeout(milliseconds)
  • 也许还有其他原因我现在没有想到。
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35323308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档