当前位置: 首页 > 知识库问答 >
问题:

JSoup带空格的Java URL(双重编码错误)

平光明
2023-03-14

谢谢你到目前为止的帮助。

我的第一个问题是文档doc=Jsoup.connect(URL). get();在这个操作中通常会发生什么编码和解码。例如,我可以给它utf-8或utf-16(具有最新的JSoup库)。

我的第二个问题是以下网址:

      String url = "http://www.chestertons.com/property-to-buy/search-results/properties-in-london-england-to-buy/b-t-llondon, england/?pagesize=60"

如果滚动到england之前有一个空格,我尝试将空格编码为UTF-8,但Jsoup解析器会对URL进行双重编码,我需要这样做,因为Jsoup根本不喜欢空格。

完整代码是:

     Document doc = Jsoup.connect(URL).userAgent("Chrome/41.0.2228.0 "
                + "(Windows NT 6.1)"
                + "AppleWebKit/537.36 (KHTML, like Gecko) Mozilla/5.0 "
                + "Safari/537.36").timeout(14000).followRedirects(false).
                ignoreContentType(true).get();

我从控制台得到的错误是:

     SEVERE: IO exception from crawling 
    org.jsoup.HttpStatusException: HTTP error fetching URL. Status=404, URL=http://www.chestertons.com/property-to-buy/search-results/properties-in-london-england-to-buy/b-t-llondon%252C%2520england/?pagesize=60

任何对问题的帮助或洞察都将不胜感激

共有1个答案

太叔逸春
2023-03-14

我设法找到了正确的措辞,并通过其他帖子判断它不是“eindutig”。

以下是我的工作:

     Document doc;
        doc = Jsoup.parse(new URL(getUrl()).openStream(),  "ISO-8859-1", getUrl());

现在我唯一的问题是,如何通过使用parse来避免重定向和忽略内容类型(可能)。这是我能看到的唯一让工作顺利进行的方法。

 类似资料:
  • 问题内容: Python教程说:“在运算符周围和逗号后使用空格,但不要直接在括号结构内使用:a = f(1,2)+ g(3,4)”。“不直接在包围结构内”到底是什么意思? 问题答案: 这可能来自PEP 8-Python代码样式指南 。具体来说,请参见“表达式和语句中的空白”部分。 从该部分:

  • 问题内容: 我通过xmlrpc从我的一个客户那里获得的字符串有问题。他给我发送了两次编码的utf8字符串:(因此,当我在python中获取它们时,我有一个unicode对象,该对象必须再解码一次,但显然python不允许这样做。我注意到我的客户端但是我需要在修复之前先进行快速解决。 来自tcp转储的原始字符串: 它将转换为: 我们得到的最好的是: 结果是正确的字符串,它是: 但是,这很丑陋,不能在

  • 问题内容: 我使用jsoup从不同页面的html源代码中提取了一些信息。它们大多数是UTF-8编码的。其中之一是使用ISO-8859-1编码的,这会导致一个奇怪的错误(在我看来)。 包含错误的页面是:http : //www.gudi.ch/armbanduhr- metall- wasserdicht-1280x960-megapixels-p-560.html 我用以下代码阅读了所需的Stri

  • 问题内容: 我正在使用Jsoup清理来自表单的用户输入。有问题的表单包含一个要求纯文本的表单。提交表单后,我使用; 清除输入。但是,由于html会忽略多余的空格,因此将从输入中删除有价值的空格字符。 例如,如果有人在中输入了一些文本行: 之后,您将拥有: 如何使保留空白?我知道它是为解析html而设计的,而不是html,因此还有更好的选择吗? 问题答案: 如果您的textarea只希望使用纯文本,

  • 当我做建筑的maven项目是抛出下面的错误。我检查了我所有的代码,没有地方\或\u存在于代码中。虽然很多答案和资源指出了/vs中的错误,但我想提到的是,我没有本地更改,这个回购对我团队中的其他人来说也很好。它以前对我也很好。 我已经尝试了以下方法: 在我的mac电脑上重新安装java 能不能请一些人帮我一下。

  • 问题内容: 我正在使用ProcessBuilder运行Windows可执行文件…我需要运行的确切命令是: 如果我从命令提示符处运行上述命令,它将正常工作。 然后,如果我按照下面的帖子(ProcessBuilder在命令行中添加额外的引号)中的String []数组的形式发出命令和参数,则它将失败,因为目录路径中的空格以某种方式将参数打断到CCBU.exe可执行文件: 如果我将数据文件和过滤器移动到