【问题标题】:Same Jsoup code behaving differently on Android and desktop相同的 Jsoup 代码在 Android 和桌面上的行为不同
【发布时间】:2012-05-14 20:44:19
【问题描述】:

我有 5 行简单的 Jsoup 代码来解析一些字符串,它可以顺利运行并返回一个包含我想要的值的数组列表,但是在 android 模拟器和手机上,它什么也不返回,甚至没有给出错误。

这就是全部代码:

Document doc = Jsoup.connect(myURL).get();
Elements els = doc.select("div font a");
for (int i = 3; i < els.size(); i++) {
    latestNews.add(els.get(i).text());
}

在桌面上,它会将元素添加到数组列表中,但是在设备上,什么也没有发生。有人可以帮忙吗?

【问题讨论】:

    标签: java android html-parsing jsoup


    【解决方案1】:

    您确定从该站点接收到相同的 HTML 吗?您应该调试并检查您的 doc 变量,以确保它包含与您在网站上所期望的相同的 HTML。解析整个站点时可能会抓取移动站点的情况? (不确定 Jsoup 是否阻止获取移动站点)。您可能需要设置用户代理,以便接收网站的完整桌面版本。

    例如

    Document doc = Jsoup.connect(myURL).userAgent("Mozilla").get();
    

    【讨论】:

    • 这些与我在 eclipse 上的 android 项目和 netbeans 上的简单 try 项目完全相同。我看不到如何调试,它在尝试解析时没有给出任何错误..
    • 在 Eclipse 中在“Document doc = Jsoup.connect(myURL).get();”这一行放置一个断点右键单击您的 Android 项目,选择调试为,然后选择“Android 应用程序”,当您运行它时,它将在该行暂停。点击“Step over”进入下一行。检查“doc”变量(用鼠标悬停在它上面)。然后你可以看到它收到的 HTML
    • 我现在无法调试它,因为手机和电脑都搞砸了,但这很奇怪,我在 Document doc = ... 行之后简单地放了 hello, world string,它没有打印出来。
    • 您是否尝试设置用户代理?我编辑了我的答案,包括一个如何做到这一点的例子
    • 它现在给出异常 UnknownException + 网站 url。这是否意味着它无法在设备上处理它?我试图解析的网站没有移动特定网站。我尝试了用户代理,但它没有改变。
    猜你喜欢
    • 2021-02-27
    • 2015-10-31
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 2013-08-02
    • 2011-06-04
    • 2016-08-21
    • 1970-01-01
    相关资源
    最近更新 更多