一个简单的python包装器,用于archive.org的“立即保存页面”捕获服务
savepagenow的Python项目详细描述
一个简单的python包装器,用于archive.org的“立即保存页面”捕获服务
安装
$ pip install savepagenow
python用法
导入它。
>>>importsavepagenow
捕获URL。
>>>archive_url=savepagenow.capture("http://www.example.com/")
看看它存放在哪里。
>>>printarchive_urlhttps://web.archive.org/web/20161018203554/http://www.example.com/
如果最近缓存了一个url,archive.org可能会将该url返回到该页面,而不是执行新的捕获。发生这种情况时,capture方法将引发一个CachedPage异常。
如果您在几秒钟内请求同一个url两次,则可能会发生这种情况。
>>>savepagenow.capture("http://www.example.com/")'https://web.archive.org/web/20161019062637/http://www.example.com/'>>>savepagenow.capture("http://www.example.com/")Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"savepagenow/__init__.py",line36,incapturearchive_urlsavepagenow.exceptions.CachedPage:archive.orgreturnedacachedversionofthispage:https://web.archive.org/web/20161019062637/http://www.example.com/
您可以自己编写代码来捕获该异常,也可以使用内置的capture_or_cache方法,该方法将返回archive.org提供的url以及一个布尔值,指示它是新捕获(true)还是来自缓存(false)。
>>>savepagenow.capture_or_cache("http://www.example.com/")('https://web.archive.org/web/20161019062832/http://www.example.com/',True)>>>savepagenow.capture_or_cache("http://www.example.com/")('https://web.archive.org/web/20161019062832/http://www.example.com/',False)
品味是无法解释的,但您可以设计一行代码来处理该命令,如下所示:
>>>url,captured=savepagenow.capture_or_cache("http://www.example.com/")
命令行用法
python库也作为命令行界面安装。您可以像这样从终端运行它:
$ savepagenow http://www.example.com/
该命令具有与python api相同的选项,您可以从其帮助输出中了解这些选项。
$ savepagenow --help Usage: savepagenow [OPTIONS] URL Archives the provided URL using the archive.org Wayback Machine. Raises a CachedPage exception if archive.org declines to conduct a new capture and returns a previous snapshot instead. Options: -ua, --user-agent TEXT User-Agent header for the web request -c, --accept-cache Accept and return cached URL --help Show this message and exit.
自定义用户代理
为了对Internet存档保持透明和礼貌,SavePageNow发出的所有请求都带有一个自定义的user agent,它将自己标识为^{TT4}$。
您可以使用api的可选参数进一步自定义此设置。
以下是如何在python中进行此操作:
>>>savepagenow.capture("http://www.example.com/",user_agent="my user agent here")
下面是如何从命令行执行此操作:
$ savepagenow http://www.example.com/ --user-agent "my user agent here"