一尘不染

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

selenium

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

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

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

更新资料

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


阅读 270

收藏
2020-06-26

共1个答案

一尘不染

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

可以做到这一点的Java库是ApacheHttpComponents,尤其是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 JavaDoc forHttpClient, the documentation for the HttpClient
interface
的文档包含了一个很好的
示例。

2020-06-26