APS Journals
A pythonic interface for browsing APS
The apsjournals
library is a collection of tools used for exploring American
Physical Society publications via python.
Motivation
Admittedly, the APS website is well-built. Why apsjournals
then?
- The APS website does not offer an official API. This library offers a set of usable abstractions to help explore some of the available data.
- It is not possible to download an entire Issue as a single PDF in the current website.
Future versions of
apsjournals
will offer such behavior. - Why not? Interacting with APS publications via Python is fun.
Loading Articles for a Journal Issue
The apsjournals
library offers several ways to load articles. The easiest of which
is by picking a Journal, then specifying a volume and issue number. The library will then
load the entire issue, including all articles. For example:
>>> from apsjournals import PRL
>>> PRL
Journal('Physical Review Letters')
>>> PRL.issue(121, 6)
Issue('Physical Review Letters', 121, 6)
>>> PRL.issue(121, 6).articles[:3]
[Article('Magnetic Levitation Stabilized by Streaming Fluid Flows'),
Article('First Six Dimensional Phase Space Measurement of an Accelerator Beam'),
Article('Ubiquitous Spin-Orbit Coupling in a Screw Dislocation with High Spin Coherency')]
Download Journal Articles
In addition to surveying which articles are in an issue, apsjournals
is also capable of downloading
articles, either individually or as an entire issue. In the latter case, a cover page and table of contents
will also be added to the pdf (including appropriately linked bookmarks).
Authentication
The first step to downloading articles is authentication. You must be a valid APS member. this library
abides by all APS Terms and Conditions, and consequently relies on you for credentials to access
APS material. Authentication can be performed by using the authenticate
function:
>>> import apsjournals
>>> apsjournals.authenticate('username', 'password')
This will set a session cookie required for pdf downloads.
Downloading an Article
After authenticating, it is then possible to download articles from an issue individually or as a whole.
To download an individual article, use the pdf
method of the Article
instance.
Specifically:
>>> journal = apsjournals.PRL
>>> issue = journal.issue(121, 6)
>>> article = issue.articles[3]
>>> article.pdf('path/to/file.pdf')
This will download the article as a pdf to the given location.
Download an Entire Issue
In order to download all the articles at once, simply use the pdf
method of the Issue
instance! For
example:
>>> issue.pdf('path/to/file.pdf')
Disclaimer
Any user of this code must abide by the Terms and Conditions of the APS website.