java - 从网页中提取日期

标签 java jquery date extraction selenium-webdriver

我想从网页中提取不同格式的日期。我正在使用 Selenium2 Java API 与浏览器进行交互。我还使用 jQuery 进一步与文档进行交互。因此,欢迎使用两层的解决方案。

不同地区的日期格式可能大相径庭。此外,月份名称可以写成文本或数字。我需要匹配尽可能多的日期,而且我知道有很多组合。

例如,如果我有这样一个 HTML 元素:

<div class="tag_view">
    Last update: May,22,2011 
    View :40
</div>

我希望提取并识别日期的相关部分:

May,22,2011

现在应该将其转换为常规的 Java Date 对象。

更新

这应该适用于任何网页的 HTML,日期可以包含在任何格式的任何元素中。例如,在 Stackoverflow 上,源代码如下所示:

<span class="relativetime" title="2011-05-13 14:45:06Z">May 13 at 14:45</span>

我希望它以最有效的方式完成,我想这将是一个返回标准化日期表示的 jQuery 选择器或过滤器。但我愿意接受您的建议。

最佳答案

由于我们不能将自己局限于任何特定元素类型或任何元素的子元素,所以您基本上是在谈论在整个页面的文本中搜索日期。以任何一种效率执行此操作的唯一方法是使用正则表达式。由于您要查找任何格式的日期,因此每种可接受的格式都需要一个正则表达式。一旦你定义了那些是什么,只需编译正则表达式并运行类似的东西:

var datePatterns = new Array();
datePatterns.push(/\d\d\/\d\d\/\d\d\d\d/g);
datePatterns.push(/\d\d\d\d\/\d\d\/\d\d/g);
...

var stringToSearch = $('body').html(); // change this to be more specific if at all possible
var allMatches = new Array();
for (datePatternIndex in datePatterns){
    allMatches.push(stringToSearch.match(datePatterns[datePatternIndex]));
}

您可以通过谷歌搜索找到更多日期正则表达式,或者自己制作它们,它们非常简单。需要注意的一件事:您可能会结合上面的一些正则表达式来创建一个更高效的程序。我会非常小心,它可能会导致您的代码很快变得难以阅读。对每个日期格式执行一个正则表达式似乎更简洁。

关于java - 从网页中提取日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6100353/

相关文章:

java - 从 ServletContext 资源解析 XML 文档时出现意外异常 [/WEB-INF/applicationContext.xml];

java - Java 中的简单文本格式,例如上标?

javascript - 用 JS 点击删除多个输入

jquery .css 返回字体粗细的常量名称

r - 在 R 中将日期转换为特定格式的字符

JavaScript 秒到时间字符串,格式为 hh :mm:ss

r - 在ggplot水平条形图中格式化日期

java - 搜索 View 在 Android 工具栏中无法正常工作

java - 首先使用java在数组中重复

javascript - D3.js - 如何解决拖动折线图时出现 NAN 错误(Jsfiddle 提供)