当前位置: 首页 > 面试题库 >

apache.httpclient能够获取内容时,JSoup.connect引发403错误

孙永嘉
2023-03-14
问题内容

我正在尝试解析任何给定页面的HTML转储。我使用了HTML
Parser
,还尝试了JSoup进行解析。

我在Jsoup中找到了有用的功能,但调用时却收到403错误 Document doc = Jsoup.connect(url).get();

我尝试使用HTTPClient来获取html转储,并且对于相同的url成功。

为什么JSoup会为403提供相同的URL,而该URL正在提供来自Commons HTTP客户端的内容?难道我做错了什么?有什么想法吗?


问题答案:

可行的解决方案如下(感谢Angelo Neuschitzer提醒您将其作为解决方案):

Document doc = Jsoup.connect(url).userAgent("Mozilla").get();
Elements links = doc.getElementsByTag(HTML.Tag.CITE.toString);
for (Element link : links) {
            String linkText = link.text();
            System.out.println(linkText);
}

因此, userAgent 可以解决问题:)



 类似资料:
  • 问题内容: 当我从带有403响应的URL获取数据时 它抛出IOException,我无法获取响应数据。 但是当我使用firefox并直接访问该URL时,ResponseCode仍然是403,但是我可以获取html内容 问题答案: 根据javadocs,该方法将返回,可用于从错误条件(例如404)中检索数据。

  • 我正在写一个小程序,我想从网站上获取一个元素。我已经学习了许多教程来学习如何使用jSoup编写此代码。我想打印的一个例子是“2018年11月19日星期一下午3:00至7:00”。我遇到了错误 这是我的代码: 谢谢你的帮助。

  • 还有一种调用模板的情况是我们只想渲染后返回模板渲染后的数据而不是直接输出,这时我们会用fetch方法; fetch的用法和display 完全一样,只是不直接输出了; //不带任何参数 $content=$this->fetch(); 此种方式系统会自动判断模板路径,并渲染出模板内容,此种方式模板路径是:主题名/应用名/控制器名/操作名+模板文件后缀名; $content=$this->fetc

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

  • 测试检查的代码中抛出的两个异常示例: 使用上述代码,当运行测试时,任何都会通过,但任何需要类提供响应的测试都会产生以下错误: EntityNotFoundException-失败 测试:

  • 我正在尝试从站点获取数据。当我在Intellij IDEA中使用此代码时,一切正常,但当我在Android Studio和real device中使用此代码时,我得到: org.jsoup.HttpStatusException:获取URL的HTTP错误。状态=403 这是我的代码: 我找到的所有信息都是关于“userAgent()”方法的,但它没有帮助。 UPD:对不起,这是我的问题。正确的网址