【问题标题】:404 error when parsing URL using jsoup使用 jsoup 解析 URL 时出现 404 错误
【发布时间】:2017-07-06 00:15:08
【问题描述】:

我在使用 Jsoup 时遇到 404 错误。调用是Document doc = Jsoup.parse(url, 30000),URL 字符串是http://www.myland.co.il/%D7%9E%D7%97%D7%A9%D7%91-%D7%94%D7%A9%D7%A7%D7%99%D7%94 并且 URL 在 Chrome 中显示正常。我得到的错误是java.io.IOException: 404 error loading URL http://www.myland.co.il/vmchk/××ש×-×שק××

有什么想法吗?

【问题讨论】:

标签: java url jsoup


【解决方案1】:

不要对网站使用parse()-方法,而是使用connect()。所以你可以设置更多的连接设置。

final String url = "http://www.myland.co.il/%D7%9E%D7%97%D7%A9%D7%91-%D7%94%D7%A9%D7%A7%D7%99%D7%94";

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

但问题在于 url 编码:

Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=404, URL=http://www.myland.co.il/vmchk/××ש×-×שק××

即使将 url 解码回 utf-8 也不能解决这个问题。

您有“替代”网址吗?

【讨论】:

  • 我使用 Jsoup.parse 来指定连接超时。使用浏览器时,页面从myland.co.il/…重定向到myland.co.il/vmchk/…由于某种原因,jsoup重定向到myland.co.il/vmchk/××ש×-×שק××重定向只发生在第一次访问该站点时。在以下访问中,不会发生重定向。通过清理 cookie 可以轻松模拟首次访问。 Jsoup 如何处理重定向?
  • 您也可以使用connect() 设置超时:Jsoup.connect(url).timeout(<timeout millis>)connect() 允许您设置 Jsoup 是否应遵循重定向:followRedirects() - 默认为 true。最好你也看看connection-class。
  • 我使用 doc = Jsoup.connect(urlString).timeout(30000).followRedirects(true).get();但仍然得到同样的错误:
  • 我查看了连接类,但这并没有多大帮助。我现在使用 doc = Jsoup.connect(urlString).timeout(30000).followRedirects(true).get();但仍然得到同样的错误:java.io.IOException: 404 error loading URL myland.co.il/vmchk/××ש×-×שק××
  • 总的来说,我认为这不是一个jsoup问题。通过HttpURLConnection 的连接也不起作用(同样的例外)。可能是因为不支持泰语(?)字体/字符集,它会被错误的字符解码。嗯...如果您更改字符集并查看如何首先解决编码问题,它可能会起作用。
【解决方案2】:

试试decodeURL()

String url = "http://www.myland.co.il/%D7%9E%D7%97%D7%A9%D7%91-%D7%94%D7%A9%D7%A7%D7%99%D7%94";
Document doc = Jsoup.connect(url.decodeURL()).get();

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2017-05-05
    相关资源
    最近更新 更多