有没有办法以编程方式从 On-Line Encyclopedia of Integer Sequences (http://oeis.org) 中搜索和检索结果?
我搜索了他们的网站,结果总是以 html 格式返回。他们似乎没有提供 API,但在政策声明中他们说以编程方式访问数据库是可以接受的。但是如何在不刮屏的情况下做到这一点?
非常感谢你的帮助。
OEIS 现在提供多个访问点,而不仅仅是使用其内部格式的访问点。这些似乎很大程度上没有记录,所以这里是我发现的所有端点:
https://oeis.org/search?fmt=json&q=<sequenceTerm>&start=<itemToStartAt>
返回从给定结果中找到的 JSON 格式的响应sequenceTerm。如果返回的结果太多,count将 > 0 而results将null. 如果没有返回结果,则为count0。 itemToStartAt用于结果的分页,因为最多只返回 10 个。这从 0 开始。如果您想返回第二页结果,这将等于 10。有关每个条目的含义的信息可以在此处找到。
https://oeis.org/search?fmt=text&q=<sequenceTerm>&start=<itemToStartAt>
与以前完全相同的参数,但是它以 OEIS 内部格式返回。这主要是在这里写的。除非您的项目需要它,否则我强烈建议您使用 JSON 格式。
https://oeis.org/search?fmt=<json|text>&q=id:A<sequenceNumber>
如果找到,将返回单个结果sequenceNumber。这是获取单个序列的建议方法,因为它似乎比一些可用作查询的替代方法优化得多。请求通常需要不到一秒钟的时间。可以在此页面上找到替代搜索查询方法。
https://oeis.org/A<sequenceNumber>/graph?png=1
该端点可用于抓取用于绘制数据点的图像。或者,将 png 设置为零会返回包含它的图形的 HTML 页面。
https://oeis.org/recent.txt
这将以 OEIS 内部格式返回最近更新的条目列表。没有可用的参数或 JSON 格式,因为这看起来像是一个静态文本文件,只是提供给客户端。由于来自 OEIS 数据库的回复长度(对于某些序列的回复可能需要 5 秒以上),我强烈建议大量缓存请求并在请求发生更改时使用上述端点进行更新。
http://oeis.org/search?fmt=text&q=2,5,14,50,233形式的 URL提供格式良好的文本输出。
但似乎没有办法以文本形式获得单个序列。
如果您碰巧使用Mathematica,听起来下面的笔记本可能会有所帮助。它允许您指定序列并自动从 OEIS 导入匹配条目的详细列表:
http://www.brotherstechnology.com/math/oeis_mathematica.html
看起来直接使用他们的 CGI 程序是他们提供的唯一 API。