【问题标题】:Jsoup connect doesn't work correctly when there is an absolute link?存在绝对链接时,Jsoup connect 无法正常工作?
【发布时间】:2018-11-11 01:03:05
【问题描述】:

我正在使用 Jsoup 从网站获取 html。例如,我的 HTML 页面中的链接如下所示:

String url="http://kitchen.sayidaty.net/node/8544/كوكيزبالشوفان/حلويات";
Document doc=Jsoup.connect(url).get();

此链接解析 NOTHING 并引发 IOException,但是当我在浏览器中手动打开此链接并将其带回我的代码时,它会发生更改并且可以正常工作!像这样:

String url="http://kitchen.sayidaty.net/node/8544/%D9%83%D98%B2-%D8%A7%D9%86/%D8%AD%D9%84%D9%88%D9%8A%D8%A7%D8%AA#ingredients";
Document doc=Jsoup.connect(url).get();

有什么办法可以得到绝对链接(第二个),我试过了,结果一样:'(

link.attr("abs:href") 

【问题讨论】:

    标签: android html parsing jsoup href


    【解决方案1】:

    当您执行 POST 和 GET 等事务时,您面临的问题与字符集规范 http 协议句柄有关。您必须使用application/x-www-form-urlencoded MIME 格式(有关HTML 表单编码的更多信息,请参阅HTML specification)。

    在您的情况下,您必须使用Android URLencoder,但只能在您要使用的地址末尾使用,以避免出现问题。所以变换:

    String url="http://kitchen.sayidaty.net/node/8544/كوكيزبالشوفان/حلويات";
    

    进入:

    String auxUrl= URLEncoder.encode("كوكيزبالشوفان/حلويات", "utf-8");
    String url="http://kitchen.sayidaty.net/node/8544/" + auxUrl;
    

    然后继续你的

    Document doc=Jsoup.connect(url).get();
    

    【讨论】:

    • @SundosAltamimi 很高兴看到它成功了。请检查我的答案是否正确。谢谢你的好意。
    • 我的朋友,请在我的答案左上角,检查绿色的“V”以使我的答案正确。通过这种方式,您可以提高我在 StackaOverflow 上的声誉,这可以作为我们工作的“薪水”,并为他人的利益投入时间,帮助像您这样的人解决问题和疑虑。请考虑人们在您身上投入的时间和注意力。谢谢你。最良好的祝愿。
    猜你喜欢
    • 1970-01-01
    • 2012-12-27
    • 1970-01-01
    • 2014-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-20
    • 2015-07-05
    相关资源
    最近更新 更多