一尘不染

selenium2:检测链接目标的内容类型

selenium

我正在使用Selenium 2 Java API与网页进行交互。我的问题是:如何检测链接目标的内容类型?

基本上,这是背景:单击链接之前,我想确保响应是HTML文件。如果没有,我需要以其他方式处理它。因此,假设有一个PDF文件的下载链接。应用程序应直接读取该URL的内容,而不是在浏览器中打开它。

我们的目标是拥有一个能够自动知道当前位置是HTML,PDF,XML或其他类型的应用程序,以便使用适当的解析器从文档中提取有用的信息。

更新资料

额外的奖励:将奖励给最佳解决方案,使我能够获得给定URL的内容类型。


阅读 256

收藏
2020-06-26

共1个答案

一尘不染

正如Jochen所建议的那样,在不下载内容的情况下获取Content-type的方法是HTTP HEAD,而硒webdrivers似乎没有提供这种功能。您将必须找到另一个库来帮助您获取URL的内容类型。

可以做到这一点的Java库是Apache HttpComponents,尤其是
HttpClient

(以下代码未经测试)

HttpClient httpclient = new DefaultHttpClient();
HttpHead httphead = new HttpHead("http://foo/bar");
HttpResponse response = httpclient.execute(httphead);
BasicHeader contenttypeheader = response.getFirstHeader("Content-Type");

System.out.println(contenttypeheader);

该项目为HttpClient发布了JavaDocHttpClient接口的文档包含了一个很好的示例。

2020-06-26