一个简单的python包装器,用于archive.org的“立即保存页面”捕获服务

savepagenow的Python项目详细描述


一个简单的python包装器,用于archive.org的“立即保存页面”捕获服务

PyPI versionBuild StatusCoverage Status

安装

$ 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"

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java如何使用从PreparedStatement返回的RowId。getGeneratedKeys()?   selenium chrome驱动程序中下一个网站url的java空白页   java如何将参数化匿名类转换为lambda?   java JUnit在AfterClass上获取测试结果   java将动态XML/JSON内容与静态标记化负载进行比较,并检索标记值   java共享一个需要数据持久性的项目[数据库]   java在调用方法时获取意外的参数类型。getParameterTypes()   java如何用jdbc在swing中用另一个字段替换外键?   需要java Jersey Tomcat CDI依赖项解释   java如何生成UML图   java如何编写Jersey rest服务可以通过给定的spring代码访问   SpringMaven存储库管理器Nexus与Java依赖项的Artifactory   java将包从另一个项目导入eclipse中的当前项目   加密Java使用密码加密文件