NullPointerException 解析 Jsoup

2023-12-22

我在使用 Jsoup 解析网站时遇到 NullPointerException。解析的实际网页会根据用户输入而变化。本质上,网页上有时有图像,有时没有。

Document doc = Jsoup.connect("http://www.forbes.com/colleges/"+college+"/").get();
Elements photos = doc.select("div[id=photos]");
if(photos!=null){                   
    imgSrc1 = photos.select("li").select("img").first().attr("src");
    input1 = new java.net.URL(imgSrc1).openStream();
    bitmap1 = BitmapFactory.decodeStream(input1);
    image1.setImageBitmap(bitmap1);

}else{
    buffer.append("No Pictures");
}

截至目前,对于有图像的网页,它们可以正常显示。对于那些没有图像的人,我会抛出 NPE。我尝试通过检查 id“photos”是否存在来阻止它,但我仍然收到错误。

Logcat:

07-30 16:24:43.497: E/AndroidRuntime(30847): FATAL EXCEPTION: main
07-30 16:24:43.497: E/AndroidRuntime(30847): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.collegeselector/com.collegeselector.CollegeInfo}: java.lang.NullPointerException
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.ActivityThread.access$600(ActivityThread.java:141)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.os.Handler.dispatchMessage(Handler.java:99)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.os.Looper.loop(Looper.java:137)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.ActivityThread.main(ActivityThread.java:5039)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at java.lang.reflect.Method.invokeNative(Native Method)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at java.lang.reflect.Method.invoke(Method.java:511)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at dalvik.system.NativeStart.main(Native Method)
07-30 16:24:43.497: E/AndroidRuntime(30847): Caused by: java.lang.NullPointerException
07-30 16:24:43.497: E/AndroidRuntime(30847):    at com.collegeselector.CollegeInfo.onCreate(CollegeInfo.java:92)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.Activity.performCreate(Activity.java:5104)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
07-30 16:24:43.497: E/AndroidRuntime(30847):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
07-30 16:24:43.497: E/AndroidRuntime(30847):    ... 11 more

我应该怎么做才能解决这个问题?

示例链接:http://www.forbes.com/colleges/cornell-university/ http://www.forbes.com/colleges/cornell-university/没有照片http://www.forbes.com/colleges/columbia-university-in-the-city-of-new-york/ http://www.forbes.com/colleges/columbia-university-in-the-city-of-new-york/有照片吗


您需要检查您的照片元素是否确实包含项目

Document doc = Jsoup.connect("http://www.forbes.com/colleges/"+college+"/").get();
Elements photos = doc.select("div[id=photos]");
if(photos!=null && photos.size() > 0){                   
    imgSrc1 = photos.select("li").select("img").first().attr("src");
    input1 = new java.net.URL(imgSrc1).openStream();
    bitmap1 = BitmapFactory.decodeStream(input1);
    image1.setImageBitmap(bitmap1);
}else{
    buffer.append("No Pictures");
}

注意photos.size() > 0我添加到你的 if 语句中。select(..)中的陈述Jsoup如果没有元素,则不会返回 null。他们将返回一个空的Elements list. http://jsoup.org/apidocs/org/jsoup/nodes/Element.html#select(java.lang.String)您只需要检查尺寸photos

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NullPointerException 解析 Jsoup 的相关文章

  • 椭圆与椭圆如何相交?

    我用的是JAVA Ellipse2D s1 new Ellipse2D Float 0 0 100 100 System out println s1 intersects 99 30 100 100 应该返回 false 但它返回 tru
  • Mac OSX 上使用 Java 7 的透明 JFrame/JWindow

    我们有一个屏幕共享小程序 它打开 Swing JFrame 并使用 Robot 类捕获空框架后面的屏幕 用户可以单击框架并与小程序后面的任何内容进行交互 这在 Windows 上运行良好 并且用于 Apple 的 Java 版本 但对于 M
  • 如何跨工作区保存 E​​clipse 启动配置文件?

    当我复制 Eclipse 项目目录时 它包含 classpath 和 project 文件 这样当我将同一目录带到另一个 Eclipse 实例时 我不必设置我的构建路径等 假设所有资源都包含在在项目中 而不是外部 但是 此过程不会导致启动配
  • 如何知道 Solr Optimize 何时完成?

    我正在使用 Solr php client 通过 php 与 Solr 进行通信 这段代码触发solr优化命令 solr gt optimize 请问有没有什么方法可以确定优化完成了 这都是因为我的网站上有一个管理页面 我每天必须手动优化
  • Spring 在 AuthenticationSuccessHandler 中自动装配会话范围 bean 不起作用

    我正在使用 spring security 我想初始化一个对象User在用户成功登录后的会话中 安全配置如下 Configuration EnableWebSecurity PropertySource classpath configs
  • 没有字符串参数构造函数/工厂方法可以从字符串值 ('') 反序列化

    我在使用时遇到了 json 解析问题ObjectMapper类来自com fasterxml jackson databind包 我得到的错误是 com fasterxml jackson databind JsonMappingExcep
  • 使用java将文件从GCS存储桶传输到SFTP服务器

    我能够从 GCS 存储桶读取文件 但所有库都喜欢jsch将文件传输到 SFTP 服务器时会查找文件路径 而不是内存中的文件 我不想将从GCS读取的文件写入磁盘 如何将内存中的文件传输到SFTP 我假设您想上传内存中的数据 JSch 实际上有
  • Java 会话变量

    我听说有些人认为在会话中将信息存储在服务器上是一个坏主意 因为它不安全 因此 在多页面业务流程功能中 应用程序将数据写入数据库 然后在需要时检索信息 在会话中存储私人信息是否一定不安全 只要会话本身安全 在会话中存储属性就不存在安全风险劫持
  • Ctrl 单击 Eclipse 中的类显示二进制/jar 而不是源

    使用Eclipse 版本 Helios 服务版本 2 内部版本号 20110218 0911 与Android插件 我有一个 Android 项目 AndroidUtil 它被标记为我的主要 Android 应用程序的 库 项目 当我按住
  • 如何更改使用 Google ReCaptcha 版本 2 时的错误消息?

    当为 Google ReCaptcha 版本 2 选择多张照片时 会显示以下错误消息 需要多个正确的解决方案 请解决更多 如何将错误消息更改为我网站上的自定义消息 这是图像 我认为不可能在服务器端 在谷歌 进行 这可以在客户端通过利用 js
  • 解析JSON数据并将其放入gridview中

    我正在开发一个应用程序 我必须在其中解析JSON数据并且必须将它们放入自定义中gridview 它应该是这样的 到目前为止 我已经在 asynctask 中解析了 JSON 数据并获取了这些值 这是我的代码 private class ge
  • Android Studio安装JDK错误

    In Android Studio I am facing bellow error 当我按下时会显示此弹出窗口Alt Enter对于缺少的类 符号 当我点击 setup SDK 时 它显示两个选项 1 8 Java版本 1 8 0 60
  • 使用 spring mvc 的多个域

    假设我有一个应用程序必须缩短 URL 但还要执行其他操作 喜欢google com and goo gl or facebook com and fb me 部署两个应用程序很容易 但 目前 仅部署一个应用程序更简单 使用 spring 和
  • spring-hibernate 花费更多时间的任何原因?

    目前 我正在春季和冬眠期间从事一个项目 我来到这里 获取记录并在 JSP 中显示这些记录需要更多时间 我在各处都保留了时间戳 以查看哪里花费了更多时间 Time HomeController start 2014 07 09 18 58 5
  • 清单合并失败:需要为 显式指定 android:exported

    我的清单文件有问题 错误消息 清单合并失败 android 需要为 明确指定导出 面向 Android 12 及更高版本的应用需要指定显式值android exported当相应的组件定义了意图过滤器时 有关详细信息 请参阅 https d
  • RecyclerView 来自 Firebase 的部分和数据

    您好 我正在开发一个应用程序 在其中我必须使用 Firebase 填充数据回收器视图 准备就绪 现在我想做的是用 data firebase 填写一个 recyclerview 但有一些部分将成为托管 data firebase 的父级 我
  • 我们可以将请求分派到 servlet 内的 HTML

    这可能吗 RequestDispatcher rd request getRequestDispatcher index html rd forward request response 是的 您可以将请求分派到 HTML 页面
  • 当列表中不存在 X 时,从列表中查找大于 X 的值

    我试图从列表中查找大于特定值 在我的情况下已知 的值 Example Given list 1 2 5 10 15 list is sorted 查找大于的值X 7在这种情况下 期望的结果 返回一个包含值的列表 10 15 我尝试使用jav
  • 在 IntelliJ IDEA 11 中编译期间未检测到模块依赖性

    我正在开发一个 Android 应用程序 我正在尝试包含图形视图 https github com jjoe64 GraphView绘制一些图表 需要将其作为模块依赖项包含在内 执行此操作后 IntelliJ IDE 会正确检测到包 我可以
  • 这种说法是否恰当。 if (0 != 表达式或变量) {} 在java中? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi

随机推荐

  • android中每个列表项都有viewpager的listview

    在将数据设置为列表视图中的列表项时 我需要您的帮助 在我的列表视图中 每个项目都有一个 ViewPager 每个 viewpager 应该有不同的数据 我不知道如何为每个视图页面设置不同的数据 实际上 基于列表项索引 我需要设置数据视图页面
  • 使用ip route add为多台设备添加组播路由

    TLDR 有没有办法使用 ip Route 为多个网卡添加多播路由 我们有软件将两个绑定到不同 NICS 上不同 IP 地址的套接字连接到两个单独的多播组 例如套接字 1 绑定到 192 168 0 2 并加入多播组 233 255 10
  • 当没有输出时 Process.StandardOutput.Readline() 挂起

    Note 我正在尝试跑步packer exe作为解决特定问题的后台进程azure arm构建器 我需要观察输出 我没有使用Start Process因为我不想使用中间文件来使用输出 我设置了以下代码packer exe在后台运行 以便我可以
  • 白色背景上带有浮动标签的 TextInputLayout Android 中的可见性问题

    我正在创建具有 textinputlayout 浮动标签的简单登录屏幕 下面给出了 java 文件和 xml protected void onCreate Bundle savedInstanceState super onCreate
  • Control.ClientRectangle 与 Control.DisplayRectangle

    我了解有关表单 控件的客户端矩形的概念 但我不明白之间有什么区别 Control ClientRectangle and Control DisplayRectangle 在阅读了这两个属性的 MSDN 页面后 并不清楚其中一个何时会返回与
  • 为什么我们需要 Hadoop 无密码 ssh?

    AFAIK 需要无密码 ssh 以便主节点可以在每个从节点上启动守护进程 除此之外 无密码ssh对于Hadoop的操作有什么用处吗 用户代码 jar 和数据块如何跨从节点传输 我想知道所使用的机制和协议 无密码 SSH 应该只配置为主从对
  • 在 PHP 中如何检查数组中的所有键是否都有空值? [复制]

    这个问题在这里已经有答案了 我有一个数组 array array key1 gt null key2 gt null key3 gt null key4 gt null 我想确定是否所有数组键都有空值 如果是 则返回 false 上面的示例
  • Swift 4:将字典添加到 Plist

    所以 我有一个空的 plist 我试图在 plist 中创建这些值 使用此代码 let dictionary String String key1 value1 key2 value2 key3 value3 let documentDir
  • 将 iOS 键盘布局更改为表情符号?

    当 UITextField 成为第一响应者时 是否可以将键盘布局更改为表情符号 或根据用户操作 例如点击 UIButton 我知道我可以将键盘布局更改为以下之一 typedef enum UIKeyboardTypeDefault Defa
  • 我应该使用 OpenId 的哪个 Erlang 实现(如果有)?

    我需要 OpenId 协议的 Erlang 实现 我发现了以下内容 但这似乎是一个处于早期阶段的项目 http code google com p erlopenid http code google com p erlopenid 关于我
  • python 中的 next() 真的那么快吗?

    通过这里的一篇文章 我读到使用 next 搜索和检索列表中元素的第一次出现可能会很快 然而 我惊讶地发现传统的 for if break 语法在相当长一段时间内表现得更好 如果我的分析有错误 请纠正我 这是我尝试过的一个片段 gt gt g
  • 错误:HTTP 错误:400,项目“my_project”不是启用 Firestore 的项目

    当我运行命令时firebase deploy我收到此错误 错误 HTTP 错误 400 项目 my project 不是启用 Firestore 的项目 您是否正在尝试使用 Cloud Firestore 如果是这样 请访问控制台的数据库部
  • 我们如何在 ionic 应用程序中隐藏启动屏幕?

    无论如何 在离子应用程序中隐藏或不显示启动屏幕 并且电容器中的启动屏幕时间较少或在科尔多瓦中较少 以及如何减少离子应用程序中的启动屏幕时间 谢谢 这是禁用启动画面的调整 在 config xml 文件中
  • UIViewController 包含像 Google+ 这样的动画

    理解我想要解释的内容的最好方法是打开Google 应用程序并点击主帖子流中显示的帖子背景中的任意位置 当您点击它时 整个帖子会以漂亮的动画自动移动到屏幕中央 并在其下方加载帖子的评论 我认为这是一个常见的UIViewController遏制
  • 我们必须用 Kotlin 中的所有控制流表达式覆盖所有分支?

    我在看the docs http kotlinlang org docs reference control flow html从 Kotlin 网站来看 控制流表达式只有两个 if and when For if 该表达式需要有一个els
  • 固定长度的填充值 - xslt

    我有这个简单的 xslt 代码
  • 如何在 Unity 中对 for 循环应用间隔/延迟

    我试图用 for 循环中生成的 1 3 中的随机数开始我的场景 我打算让数字每次都是随机的 但是我不希望直接生成相同的两个数字 而是首先生成一个 1 3 之间的随机数 然后等待 60 秒 生成一个随机数1 3 之间的数字 不包括最近生成的数
  • javadoc 的语法高亮?

    目前 我使用 PRE 标签在 javadoc 中格式化代码示例 例如 Example javadoc pre String foo bar pre return true if the operation completed 但这在生成的
  • Rails 3:在 Active Record 中存储会话(不是 cookie)

    我在谷歌大学搜索了大约一个小时左右 但没有关于这个主题的单一好的文档 希望有人能提供帮助 我愿意买一本书 只要有人能告诉我哪一本书 我正在使用以下版本 导轨 3 2 6 ruby 1 9 3p194 2012 04 20 修订版 35410
  • NullPointerException 解析 Jsoup

    我在使用 Jsoup 解析网站时遇到 NullPointerException 解析的实际网页会根据用户输入而变化 本质上 网页上有时有图像 有时没有 Document doc Jsoup connect http www forbes c