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

试图读取我的网站上目录的内容时出现JSoup错误403

冯福
2023-03-14

线程“main”组织中出现异常。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=403,URL=(站点)位于组织。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:449)。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:465)。jsoup。帮手HttpConnection$响应。在org上执行(HttpConnection.java:424)。jsoup。帮手HttpConnection。在org上执行(HttpConnection.java:178)。jsoup。帮手HttpConnection。在计划中获取(HttpConnection.java:167)。URL阅读器。main(URLReader.java:21)

大家好!

我一直在寻找一种方法来阅读一个我正在开发的应用程序的网站目录。

如果我硬编码,我可以自己读取文件并与它们一起工作,但是如果我试图从目录中获取文件列表,我会得到这个错误。

我已经尝试了一些方法,但这是我目前正在使用的代码。

字符串url=“”/(出于隐私考虑删除了网站);打印(“正在提取%s…”,网址);

    Document doc = Jsoup.connect(url).userAgent("Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36").get();
    Elements links = doc.select("a[href]");
    Elements media = doc.select("[src]");
    Elements imports = doc.select("link[href]");

......

现在,如果我使用主网站www.google.com/它读取链接。问题是我想要一个目录www.google.com/something/something/...

当我尝试我的网站,我得到这个错误。

知道为什么我可以访问我的主站点,但不能访问其中的目录吗?

我还注意到结尾需要“/”。

只是好奇我是不是错过了什么,或者需要用另一种方式做什么?

谢谢你的时间。

共有3个答案

左华灿
2023-03-14

其中一个可能的原因是无法从Java代码访问外部网站,请使用代理进行连接。

System.setProperty("http.proxyHost", "<<proxy host>>"); 
System.setProperty("http.proxyPort", "<<proxy port>>");
蓬长恨
2023-03-14

这可能是服务器配置(而不是您的应用程序)的问题(或故意试图阻止访问)。从http-status-code-403标记的标记wiki摘录:

403或“禁止”错误消息是一个HTTP标准响应代码,指示请求合法且已被理解,但服务器拒绝响应请求。

从标记wiki本身:

由于授权问题或与请求相关的其他约束,Web服务器可能会返回403禁止。文件权限、缺乏加密和达到的最大用户数(等等)都可能是403响应的原因。

如果目标站点试图阻止屏幕抓取,另一种可能是无法识别的用户代理字符串,但您将用户代理字符串设置为从实际浏览器获得的字符串(我猜想),因此这不应该是原因。

您的问题不清楚您是否希望获取一个常规(HTML)网页,或者在创建索引时获取服务器生成的一个特殊“目录列表”页面。目录中不存在html。如果是后者,请注意,许多服务器禁用了这些列表,以避免泄漏目录中未链接到网站本身的文件名。同样,这是一个服务器配置问题,而不是应用程序可以解决的问题。

祁绪
2023-03-14
String mylink = "http://www.imdb.com/search/title?genres=action";

Connection connection = Jsoup.connect(mylink);
connection.userAgent("Mozilla/5.0");
Document doc = connection.get();

//Elements elements = doc.body().select("tr.even detailed");
Elements elements = doc.getElementsByClass("results");

System.out.println(elements.toString());
 类似资料:
  • 我得到了这个错误。 内部服务器错误 服务器遇到内部错误或配置错误,无法完成您的请求。 请联系webmaster@crimsonbux.com的服务器管理员,并告知他们错误发生的时间,以及您所做的任何可能导致错误的事情。 有关此错误的详细信息,请参阅服务器错误日志。 此外,尝试使用错误文档处理请求时遇到 500 内部服务器错误错误。 www.crimsonbux.com端口80上的Apache/2

  • 使用JSOUP抓取网页时出现SSL错误。这是一个特定于站点的问题吗?(JSOUP在其他网站上工作) 我在试着运行一个刮擦,我一直在运行这样的刮擦,但是这个失败了。通常情况下,我使用jSoup连接到一个网页,然后在页面上抓取我想要的东西。这个人似乎试图做一个ssl握手什么的,但失败了。 我发现这个页面有一个类似的问题,但是,我认为操作是在所有jSoup刮擦,其中我的是特定于这一个网站的问题。http

  • 问题内容: 使用Jsoup登录网站需要什么?我相信我的代码是正确的,但是我从未使用Jsoup成功登录到网站,因此我可能会丢失一些东西。这是我的代码: 返回一个显示未成功登录的登录页面。有一个名为的输入值,我认为这可能是为什么它不起作用的原因。这个值会随着时间的推移而上升。我运行了两次代码,时间变量返回了和。我的代码需要大约10秒钟的时间来打印文档,因此,变量在发送发布请求时是否已经更改?我不确定这

  • 问题内容: 我的问题是,它不仅需要基本的cookie,而且还要求会话cookie和随机生成的ID。我认为这意味着我需要将Web浏览器模拟器与Cookie罐一起使用? 我曾尝试使用Snoopy,Goutte和其他一些Web浏览器模拟器,但到目前为止,我还无法找到有关如何接收Cookie的教程。我有点绝望了! 谁能给我一个如何在史努比或古特接受饼干的例子吗? 提前致谢! 问题答案: 然后,我们应该能够

  • 我正在尝试使用jsoup登录一个网站,我很确定我正在解析所有需要解析的东西,我只是不知道出了什么问题。 我用这个做参考:http://cs.harding.edu/fmccown/android/Logging-into-Pipeline.pdf 以下是我的AsycntTask doInBackground中的代码: 但问题是,当我登录时,它不包含页面的文档,它包含一个错误页面的文档,该页面只显示

  • 我想从下面列出的URL中删除HTML代码。问题是,我得到了这个错误:- 2016年8月14日下午6:40:36。主要严重错误:空组织。jsoup。HttpStatusException:获取URL时发生HTTP错误。状态=504,URL=http://www.bkstr.com/webapp/wcs/stores/servlet/CourseMaterialsResultsView?catalog