HTTPヘッダーを使用して最後に変更されたタイミングを確認するためにURLを照会するためにPythonに何かをまとめることは間違いなく可能です。しかし、これを行うための既存のツールがあるかどうか疑問に思います。私は次のことを想像します:
% checkurl http://unix.stackexchange.com/questions/247445/
Fri Dec 4 16:59:28 EST 2015
または:
% checkurl "+%Y%m%d" http://unix.stackexchange.com/questions/247445/
20151204
ベルおよび/または笛で。私はwgetやカールが私に必要なものを持っていないと思いますが、それが間違っていることが判明しても驚かないでしょう。そこにそのようなものはありますか?
答え1
これは目的の操作を実行するようです(応答データのレコード区切り文字として '\ r \ n'を使用するように更新されます)。
#!/bin/sh
get_url_date()
{
curl --silent --head "${1:?URL ARG REQUIRED}" |
awk -v RS='\r\n' '
/Last-Modified:/ {
gsub("^[^ ]*: *", "")
print
exit
}
'
}
unset date_format
case $1 in
(+*)
date_format="$1"
shift
;;
esac
url_date="$(get_url_date "${1:?URL ARG REQUIRED}")"
if [ -z "$url_date" ]
then
exit 1
fi
if [ "$date_format" != "" ]
then
date "$date_format" -d"$url_date"
else
echo "$url_date"
fi
答え2
Perlコード1行:
% perl -MLWP::Simple -MDate::Format -e 'print time2str "%C\n", (head $ARGV[0])[2]' http://example.com
Sat Aug 10 02:54:35 EEST 2013
最新のLinuxまたはFreeBSDシステムには、必要なモジュールがすでにインストールされている可能性があります。
答え3
カールとwgetの両方がこれを行うことができますが、最終的にPythonではそれほど価値があるかもしれません。これが私が書いた内容です。
#!/usr/bin/env python3
import sys, dateutil.parser, subprocess, requests
from getopt import getopt
errflag = 0
gTouch = None
gUsage = """Usage: lastmod [-t file] url
where:
-t file Touches the given file to make its modification date
the same as the URL modification date.
url A URL to be retrieved
"""
opts, args = getopt(sys.argv[1:], "t:v?")
for k, v in opts:
if k == "-t": # File to touch
gTouch = v
elif k == "-?": # Write out usage and exit
errflag += 1
if len(args) != 1:
errflag += 1
if errflag:
sys.stderr.write(USAGE)
sys.exit(1)
res = requests.head(args[0])
if res.status_code != 200:
sys.stderr.write("Failed to retrieve URL\n")
sys.exit(1)
if not 'Last-Modified' in res.headers:
sys.stderr.write("Headers has no last-modified date\n")
sys.exit(1)
dt = dateutil.parser.parse(res.headers['Last-Modified'])
if gTouch:
subprocess.call(["touch", "-t", dt.strftime("%Y%m%d%H%m"), gTouch])
else:
sys.stdout.write("%s\n" % dt.ctime())
答え4
Carbon14をチェックしてください。画像からWeb履歴を検出するコマンドラインPythonツール。スキャンWebページに画像がある場合、これは非常に効果的です。以下からインストールCarbon14 Githubリポジトリ、インストール後に実行。
python carbon14.py <url>