【问题标题】:can't connect to urls ending with .tv using Jsoup无法使用 Jsoup 连接到以 .tv 结尾的网址
【发布时间】:2017-04-27 15:19:50
【问题描述】:

我尝试解析以 .tv 和 .mobi 扩展名结尾的网页,但每次尝试时都会遇到相同的错误。 Jsoup 可以轻松解析以.com、.org、.in 等结尾的网站,但不能解析.tv 或.mobi。

import java.io.IOException;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import org.jsoup.nodes.Element;


public class sample {

  public static void main(String[] args) throws IOException{

    Document doc =Jsoup.connect("http://www.xmovies8.tv").get();
    String title = doc.title();
    System.out.println(title);

  }

}

堆栈跟踪:

Exception in thread "main" org.jsoup.HttpStatusException: HTTP error fetching URL. Status=403, URL=http://www.xmovies8.tv
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:598)
    at org.jsoup.helper.HttpConnection$Response.execute(HttpConnection.java:548)
    at org.jsoup.helper.HttpConnection.execute(HttpConnection.java:235)
    at org.jsoup.helper.HttpConnection.get(HttpConnection.java:224)
    at eric.sample.main(sample.java:30)
    /home/azeem/.cache/netbeans/8.1/executor-snippets/run.xml:53: Java returned: 1
    BUILD FAILED (total time: 3 seconds)

而且解析失败:

在 Jsoup 中是否有任何解决方案,以便我可以连接到以 .mobi、.tv、.xyz 等结尾的不同网站?

【问题讨论】:

  • 您也应该将堆栈跟踪格式化为代码...
  • 如何在这里改进我​​的堆栈跟踪? .打扰一下,我是这里的新手,我已经从我的 netbeans 粘贴了相同的生成输出
  • 就像您对代码所做的那样...选择所有堆栈跟踪并单击将其格式化为代码的按钮...这只是提高帖子可读性的一种方法并且它也增加了有人给你答案的可能性:)
  • @Raven 我正在尝试构建一个可以使用 JSoup 抓取网站的网络爬虫。您想提出的任何建议都会非常有帮助。 :) 谢谢。!
  • 我其实对 JSoup 一无所知...我刚刚查看了您的帖子并想给您一些建议以改进您的(未来)帖子

标签: java dom jsoup html-parsing


【解决方案1】:

您的问题与您尝试抓取的域的 TLD 无关,实际上,与名称无关,甚至与 Jsoup 无关。

如果您阅读堆栈跟踪,您会看到您收到以下响应代码:

HTTP 403 Forbidden,根据HTTP Specification,表示你的请求被web服务器看到了,故意拒绝了。

现在,这可能有多种原因,这都取决于您要抓取的网站。

可能是该网站看到您正在尝试抓取,并且他们已明确采取措施防止被抓取

也可能是该页面需要您没有的权限,或者您需要登录。

我还注意到特定域使用CloudFlare,因此可能是 CloudFlare 在您的请求到达网站本身之前就拦截了它。

我会确保抓取它们不违反网站的政策,如果不是,请尝试将您的抓取工具的 User-Agent 标头更改为普通浏览器用户代理而不是 java,看看它是否有效。

【讨论】:

  • 非常感谢@zack6849 ..!!!现在问题部分解决了。现在我可以通过添加 userAgent 来抓取其他网站。但我仍然收到xmovies8.com 的 HTTP 503 响应,这意味着该网站已关闭。大多数情况下,网站会显示重试实时版本选项。你有什么可能的解决方案我该如何抓取那些经常重试实时版本的网站?再次感谢
  • 您可能会收到该消息,因为 cloudflare 阻止了您的机器人,不幸的是,我不知道有什么方法可以轻松绕过 cloudflare,但这就是他们服务的重点:)
猜你喜欢
  • 2019-01-15
  • 1970-01-01
  • 1970-01-01
  • 2014-05-30
  • 1970-01-01
  • 2013-11-06
  • 2017-03-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多