如何获取在服务器上传的页面日期(HTML,PHP ...等)?

时间:2017-02-27 07:46:58

标签: javascript web google-chrome-extension web-crawler

我正在开发一个获取网页“上传日期”的应用程序。所以,我怀疑是怎么回事?

示例:我想获取此帖的日期。就像我将此URL发送到我的程序时,它应该将日期(它上传的那天)作为输出。

我想要此网址的日期:http://refer2earn.16mb.com/

2 个答案:

答案 0 :(得分:0)

来自php官方文档http://php.net/manual/en/function.filemtime.php

<?php
// outputs e.g.  somefile.txt was last modified: December 29 2002 22:16:23.

$filename = 'somefile.txt';
if (file_exists($filename)) {
    echo "$filename was last modified: " . date ("F d Y H:i:s.", filemtime($filename));
}
?>

答案 1 :(得分:0)

有关网页日期的更详细讨论,请参阅我对学术界Citation of a website: How to determine the year?的回答。

如果Last Modification Date设置为当前日期,则从页面确定日期可能很复杂。当日期设置为当前日期时,通常(但不总是)表示页面是动态生成的(例如,来自数据库)。关于你在这一点上唯一可以做的就是试图抓住页面看起来像日期的东西。然而,这可能很复杂,通常需要人为干预来确定哪个日期(如果有的话)是正确的日期。

下面是一个小书签,它将显示上次修改日期并为某些常见日期格式抓取页面:

javascript: void((function () {
    var toRm = document.getElementById('showTagsWithDate');
    if (toRm) {
        document.body.removeChild(toRm);
    }
    var tags = [];

    function addMoreDates(reg) {
        var addTags = document.documentElement.innerHTML.match(reg);
        if (addTags) {
            addTags.forEach(function (newTag) {
                if (tags.indexOf(newTag) === -1) {
                    tags.push(newTag);
                }
            });
        }
    }
    addMoreDates(/(20\d\d|1\d\d\d)[\s\/\-.,]\s*([1-9]|0[1-9]|[1][012])[\s\/\-,.]\s*([1-9]|0[1-9]|[12]\d|3[01])\s*(st|nd|rd|th){0,1}(?=\D)/img);
    addMoreDates(/([1-9]|0[1-9]|[12]\d|3[01])(st|nd|rd|th){0,1}[\/\-\s]\s*(january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|may|jun|jul|aug|sep|sept|oct|nov|dec)[\s,.\/\-][\s,.\/\-]?\s*(20\d\d|1\d\d\d)/img);
    addMoreDates(/(january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|may|jun|jul|aug|sep|sept|oct|nov|dec)[\s,.\/\-][\s,.\/\-]?\s*([1-9]|0[1-9]|[12]\d|3[01])(st|nd|rd|th){0,1}[\s,.\-]+(20\d\d|1\d\d\d)/img);
    addMoreDates(/\b([1-9]|0[1-9]|[1][012])[\s\/\-.,]\s*([1-9]|0[1-9]|[12]\d|3[01])[\s\/\-,.]\s*(20\d\d|1\d\d\d)\s*\b/img);
    addMoreDates(/\b([1-9]|0[1-9]|[12]\d|3[01])[\s\/\-.,]\s*([1-9]|0[1-9]|[1][012])[\s\/\-,.]\s*(20\d\d|1\d\d\d)\s*\b/img);
    addMoreDates(/\b(winter|spring|summer|fall|autumn|january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|may|jun|jul|aug|sep|sept|oct|nov|dec)[\s,.\/\-][\s,.\/\-]?\s*(20\d\d|1\d\d\d)\b/img);
    addMoreDates(/(20\d\d|1\d\d\d)[\s,.\/\-]\s*(winter|spring|summer|fall|autumn|january|february|march|april|may|june|july|august|september|october|november|december|jan|feb|mar|apr|may|jun|jul|aug|sep|sept|oct|nov|dec)/img);
    addMoreDates(/\b(20\d\d|1\d\d\d)(0[1-9]|[1][012])(0[1-9]|[12]\d|3[01])\b/img);
    tags.sort(function (a, b) {
        var aVal = Date.parse(a);
        var bVal = Date.parse(b);
        if (aVal === bVal) {
            return 0;
        }
        if (aVal > bVal) {
            return 1;
        }
        return -1;
    });
    if (tags.length === 0) {
        tags = ['No dates were detected in the page.'];
    }
    document.body.insertAdjacentHTML('afterbegin', '<div id="showTagsWithDate" style="background-color:white;color:black;">The page was last modified on ' + document.lastModified + '<br>Dates in the HTML in multiple numeric and English language formats:<ul/></div>');
    var myul = document.body.firstChild.lastChild;
    tags.forEach(function (tag) {
        myul.appendChild(document.createElement('LI')).appendChild(document.createTextNode(tag));
    });
    document.body.firstChild.appendChild(document.createElement('BR'));
})())

如果书签中的处理比合理的更多,您可以在页面中更广泛地查找日期。但是,匹配更多可能的日期格式将增加误报匹配的数量。虽然你可以根据看似无效的日期拒绝一个合理的数字,但你仍然会有很多不准确的日期。

最终,您可能最好使用服务器报告的最后修改日期,除非人指示从页面中抓取的其中一个日期是准确的。即便如此,最后修改日期可能是最合适的,具体取决于您使用日期的内容,而您未在问题中说明。