<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:dc="http://purl.org/dc/elements/1.1/"
     xmlns:wfw="http://wellformedweb.org/CommentAPI/"
     >
  <channel>
    <atom:link href="http://kitchingroup.cheme.cmu.edu/blog/feed/index.xml" rel="self" type="application/rss+xml" />
    <title>The Kitchin Research Group</title>
    <link>https://kitchingroup.cheme.cmu.edu/blog</link>
    <description>Chemical Engineering at Carnegie Mellon University</description>
    <pubDate>Sat, 01 Nov 2025 13:47:46 GMT</pubDate>
    <generator>Blogofile</generator>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    
    <item>
      <title>Serializing an Atoms object in xml</title>
      <link>https://kitchingroup.cheme.cmu.edu/blog/2015/06/28/Serializing-an-Atoms-object-in-xml</link>
      <pubDate>Sun, 28 Jun 2015 12:26:00 EDT</pubDate>
      <category><![CDATA[ase]]></category>
      <category><![CDATA[xml]]></category>
      <category><![CDATA[python]]></category>
      <guid isPermaLink="false">Ee2sIxk5cf-obWWm1HoPiklUsHs=</guid>
      <description>Serializing an Atoms object in xml</description>
      <content:encoded><![CDATA[


&lt;p&gt;
I have a future need to serialize an Atoms object from &lt;a href="https://wiki.fysik.dtu.dk/ase/"&gt;ase&lt;/a&gt; as XML. I would use json usually, but I want to use a program that will index xml. I have previously used &lt;a href="https://pypi.python.org/pypi/pyxser/1.5.2-r2"&gt;pyxser&lt;/a&gt; for this, but I recall it being difficult to install, and it does not pip install on my Mac. So, here we look at &lt;a href="https://pypi.python.org/pypi/xmlwitch/0.2.1"&gt;xmlwitch&lt;/a&gt; which does pip install ;). This package does some serious magic with context managers.
&lt;/p&gt;

&lt;p&gt;
One thing I am not sure about here is the best way to represent numbers and lists/arrays. I am using repr here, and assuming you would want to read this back in to Python where this could simply be eval'ed. Some alternatives would be to convert them to lists, or save them as arrays of xml elements.
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; ase.data.g2 &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; data
&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; ase.structure &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; molecule
&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; xmlwitch

&lt;span style="color: #BA36A5;"&gt;atoms&lt;/span&gt; = molecule(&lt;span style="color: #008000;"&gt;'H2O'&lt;/span&gt;)

&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;serialize_atoms&lt;/span&gt;(atoms):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #008000;"&gt;'Return an xml string of an ATOMS object.'&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;xml&lt;/span&gt; = xmlwitch.Builder(version=&lt;span style="color: #008000;"&gt;'1.0'&lt;/span&gt;, encoding=&lt;span style="color: #008000;"&gt;'utf-8'&lt;/span&gt;)

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; xml.atoms():
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; atom &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; atoms:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; xml.atom(index=&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atom.index)):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.symbol(atom.symbol)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.position(&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atom.position))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.magmom(&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atom.magmom))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.mass(&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atom.mass))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.momentum(&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atom.momentum))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.number(&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atom.number))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.cell(&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atoms.cell))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   xml.pbc(&lt;span style="color: #006FE0;"&gt;repr&lt;/span&gt;(atoms.pbc))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; xml

&lt;span style="color: #BA36A5;"&gt;atoms_xml&lt;/span&gt; = serialize_atoms(atoms)
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; atoms_xml

&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;open&lt;/span&gt;(&lt;span style="color: #008000;"&gt;'atoms.xml'&lt;/span&gt;, &lt;span style="color: #008000;"&gt;'w'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; f:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   f.write(&lt;span style="color: #006FE0;"&gt;str&lt;/span&gt;(atoms_xml))
&lt;/pre&gt;
&lt;/div&gt;

&lt;pre class="example"&gt;
&amp;lt;?xml version="1.0" encoding="utf-8"?&amp;gt;
&amp;lt;atoms&amp;gt;
  &amp;lt;atom index="0"&amp;gt;
    &amp;lt;symbol&amp;gt;O&amp;lt;/symbol&amp;gt;
    &amp;lt;position&amp;gt;array([ 0.      ,  0.      ,  0.119262])&amp;lt;/position&amp;gt;
    &amp;lt;magmom&amp;gt;0.0&amp;lt;/magmom&amp;gt;
    &amp;lt;mass&amp;gt;15.9994&amp;lt;/mass&amp;gt;
    &amp;lt;momentum&amp;gt;array([ 0.,  0.,  0.])&amp;lt;/momentum&amp;gt;
    &amp;lt;number&amp;gt;8&amp;lt;/number&amp;gt;
  &amp;lt;/atom&amp;gt;
  &amp;lt;atom index="1"&amp;gt;
    &amp;lt;symbol&amp;gt;H&amp;lt;/symbol&amp;gt;
    &amp;lt;position&amp;gt;array([ 0.      ,  0.763239, -0.477047])&amp;lt;/position&amp;gt;
    &amp;lt;magmom&amp;gt;0.0&amp;lt;/magmom&amp;gt;
    &amp;lt;mass&amp;gt;1.0079400000000001&amp;lt;/mass&amp;gt;
    &amp;lt;momentum&amp;gt;array([ 0.,  0.,  0.])&amp;lt;/momentum&amp;gt;
    &amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;
  &amp;lt;/atom&amp;gt;
  &amp;lt;atom index="2"&amp;gt;
    &amp;lt;symbol&amp;gt;H&amp;lt;/symbol&amp;gt;
    &amp;lt;position&amp;gt;array([ 0.      , -0.763239, -0.477047])&amp;lt;/position&amp;gt;
    &amp;lt;magmom&amp;gt;0.0&amp;lt;/magmom&amp;gt;
    &amp;lt;mass&amp;gt;1.0079400000000001&amp;lt;/mass&amp;gt;
    &amp;lt;momentum&amp;gt;array([ 0.,  0.,  0.])&amp;lt;/momentum&amp;gt;
    &amp;lt;number&amp;gt;1&amp;lt;/number&amp;gt;
  &amp;lt;/atom&amp;gt;
  &amp;lt;cell&amp;gt;array([[ 1.,  0.,  0.],
       [ 0.,  1.,  0.],
       [ 0.,  0.,  1.]])&amp;lt;/cell&amp;gt;
  &amp;lt;pbc&amp;gt;array([False, False, False], dtype=bool)&amp;lt;/pbc&amp;gt;
&amp;lt;/atoms&amp;gt;
&lt;/pre&gt;

&lt;p&gt;
Now, we can try reading that file. I am going to use emacs-lisp here for fun, and compute the formula.
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-emacs-lisp"&gt;(&lt;span style="color: #0000FF;"&gt;let*&lt;/span&gt; ((xml (car (xml-parse-file &lt;span style="color: #008000;"&gt;"atoms.xml"&lt;/span&gt;)))
       (atoms (xml-get-children xml 'atom))
       (symbol-elements (mapcar (&lt;span style="color: #0000FF;"&gt;lambda&lt;/span&gt; (atom)
                                  (car (xml-get-children atom 'symbol)))
                                atoms))
       (symbols (mapcar (&lt;span style="color: #0000FF;"&gt;lambda&lt;/span&gt; (x)
                          (car (xml-node-children x)))
                        symbol-elements)))
  (mapconcat (&lt;span style="color: #0000FF;"&gt;lambda&lt;/span&gt; (c)
               (format &lt;span style="color: #008000;"&gt;"%s%s"&lt;/span&gt; (car c)
                       (&lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; (= 1 (cdr c))
                           &lt;span style="color: #008000;"&gt;""&lt;/span&gt;
                         (cdr c))))
             (&lt;span style="color: #0000FF;"&gt;loop&lt;/span&gt; for sym in (-uniq symbols)
                   collect (cons
                            sym
                            (-count (&lt;span style="color: #0000FF;"&gt;lambda&lt;/span&gt; (x) (string= x sym)) symbols)))
             &lt;span style="color: #008000;"&gt;""&lt;/span&gt;))
&lt;/pre&gt;
&lt;/div&gt;

&lt;pre class="example"&gt;
OH2
&lt;/pre&gt;

&lt;p&gt;
Here is a (misleadingly) concise way to do this in Python. It is so short thanks to there being a Counter that does what we want, and some pretty nice list comprehension!
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; xml.etree.ElementTree &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; ET
&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; collections &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; Counter
&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;open&lt;/span&gt;(&lt;span style="color: #008000;"&gt;'atoms.xml'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; f:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;xml&lt;/span&gt; = ET.fromstring(f.read())

&lt;span style="color: #BA36A5;"&gt;counts&lt;/span&gt; = Counter([el.text &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; el &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; xml.findall(&lt;span style="color: #008000;"&gt;'atom/symbol'&lt;/span&gt;)])

&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;''&lt;/span&gt;.join([&lt;span style="color: #008000;"&gt;'{0}{1}'&lt;/span&gt;.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(a,b) &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; b&amp;gt;1 &lt;span style="color: #0000FF;"&gt;else&lt;/span&gt; a &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; a,b &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; counts.iteritems()])
&lt;/pre&gt;
&lt;/div&gt;

&lt;pre class="example"&gt;
H2O
&lt;/pre&gt;

&lt;p&gt;
And finally a test on reading a unit cell.
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; xml.etree.ElementTree &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; ET
&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; numpy &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; array

&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;open&lt;/span&gt;(&lt;span style="color: #008000;"&gt;'atoms.xml'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; f:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;xml&lt;/span&gt; = ET.fromstring(f.read())

&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;eval&lt;/span&gt;(xml.find(&lt;span style="color: #008000;"&gt;'cell'&lt;/span&gt;).text)
&lt;/pre&gt;
&lt;/div&gt;

&lt;pre class="example"&gt;
[[ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]
&lt;/pre&gt;

&lt;p&gt;
That seems to work but, yeah, you won't want to read untrusted xml with that! See &lt;a href="http://stupidpythonideas.blogspot.com/2013/11/repr-eval-bad-idea.html"&gt;http://stupidpythonideas.blogspot.com/2013/11/repr-eval-bad-idea.html&lt;/a&gt; . It might be better (although not necessarily more secure) to use pickle or some other serialization strategy for this.
&lt;/p&gt;
&lt;p&gt;Copyright (C) 2015 by John Kitchin. See the &lt;a href="/copying.html"&gt;License&lt;/a&gt; for information about copying.&lt;p&gt;&lt;p&gt;&lt;a href="/org/2015/06/28/Serializing-an-Atoms-object-in-xml.org"&gt;org-mode source&lt;/a&gt;&lt;p&gt;&lt;p&gt;Org-mode version = 8.2.10&lt;/p&gt;]]></content:encoded>
    </item>
    <item>
      <title>Using the Scopus api with xml output</title>
      <link>https://kitchingroup.cheme.cmu.edu/blog/2015/04/06/Using-the-Scopus-api-with-xml-output</link>
      <pubDate>Mon, 06 Apr 2015 09:35:57 EDT</pubDate>
      <category><![CDATA[scopus]]></category>
      <category><![CDATA[xml]]></category>
      <category><![CDATA[python]]></category>
      <guid isPermaLink="false">TYCDpg51_JvdviVCWgfVx6rN9Aw=</guid>
      <description>Using the Scopus api with xml output</description>
      <content:encoded><![CDATA[


&lt;p&gt;
According to &lt;a href="http://api.elsevier.com/documentation/AbstractRetrievalAPI.wadl"&gt;http://api.elsevier.com/documentation/AbstractRetrievalAPI.wadl&lt;/a&gt; , the native form of the Scopus abstract document is xml, and the full abstract cannot always be represented  as json. So&amp;#x2026; I am going to just bite the bullet and learn to deal with the xml. This is a companion post to &lt;a href="http://kitchingroup.cheme.cmu.edu/blog/2015/04/04/Making-highly-linked-bibliographies-from-the-Scopus-API/"&gt;http://kitchingroup.cheme.cmu.edu/blog/2015/04/04/Making-highly-linked-bibliographies-from-the-Scopus-API/&lt;/a&gt; . Most of the code in this post gets tangled out to scopus_xml.py. I know it is not totally robust yet, but I have been using it for a lot of analysis, and it works pretty well so far.
&lt;/p&gt;

&lt;p&gt;
This is another long post, with code that probably runs off screen. You can see the end result of what we do in this post here:  &lt;a href="http://kitchingroup.cheme.cmu.edu/publications.html"&gt;http://kitchingroup.cheme.cmu.edu/publications.html&lt;/a&gt; .
&lt;/p&gt;


&lt;p&gt;
We start with a general function to return an xml elementtree. We build in some caching to avoid downloading things we already have; this is slow, and there are limits on how many times you can download.
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; requests
&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; os
&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; xml.etree.ElementTree &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; ET

&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; my_scopus &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; MY_API_KEY

&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;get_abstract_info&lt;/span&gt;(EID, refresh=&lt;span style="color: #D0372D;"&gt;False&lt;/span&gt;):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #008000;"&gt;'Get and save the json data for EID.'&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;base&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'scopus-xml/get_abstract_info'&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; os.path.exists(base):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   os.makedirs(base)

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;fname&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'{0}/{1}'&lt;/span&gt;.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(base, EID)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; os.path.exists(fname) &lt;span style="color: #0000FF;"&gt;and&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; refresh:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;open&lt;/span&gt;(fname) &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; f:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; ET.fromstring(f.read())

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #8D8D84;"&gt;# &lt;/span&gt;&lt;span style="color: #8D8D84; font-style: italic;"&gt;Otherwise retrieve and save results&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;url&lt;/span&gt; = (&lt;span style="color: #008000;"&gt;"http://api.elsevier.com/content/abstract/eid/"&lt;/span&gt; + EID + &lt;span style="color: #008000;"&gt;'?view=META_ABS'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;resp&lt;/span&gt; = requests.get(url,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   headers={&lt;span style="color: #008000;"&gt;'Accept'&lt;/span&gt;:&lt;span style="color: #008000;"&gt;'application/xml'&lt;/span&gt;,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;    &lt;span style="color: #008000;"&gt;'X-ELS-APIKey'&lt;/span&gt;: MY_API_KEY})
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;open&lt;/span&gt;(fname, &lt;span style="color: #008000;"&gt;'w'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; f:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   f.write(resp.text.encode(&lt;span style="color: #008000;"&gt;'utf-8'&lt;/span&gt;))

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = ET.fromstring(resp.text.encode(&lt;span style="color: #008000;"&gt;'utf-8'&lt;/span&gt;))

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; results
&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;
Next, we do some introspection to see what we have.
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *
&lt;span style="color: #8D8D84;"&gt;#&lt;/span&gt;&lt;span style="color: #8D8D84; font-style: italic;"&gt;results = get_abstract_info('2-s2.0-84896759135')&lt;/span&gt;
&lt;span style="color: #8D8D84;"&gt;#&lt;/span&gt;&lt;span style="color: #8D8D84; font-style: italic;"&gt;results = get_abstract_info('2-s2.0-84924911828')&lt;/span&gt;
&lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;)
&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; el &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; results:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; el.tag
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; el1 &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; el:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;'  --&amp;gt;'&lt;/span&gt;,el1.tag
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;print&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;

{http://www.elsevier.com/xml/svapi/abstract/dtd}coredata
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}url
  --&gt; {http://purl.org/dc/elements/1.1/}identifier
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}eid
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}doi
  --&gt; {http://purl.org/dc/elements/1.1/}title
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}aggregationType
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}srctype
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}citedby-count
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}publicationName
  --&gt; {http://purl.org/dc/elements/1.1/}publisher
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}source-id
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}issn
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}volume
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}startingPage
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}endingPage
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}pageRange
  --&gt; {http://prismstandard.org/namespaces/basic/2.0/}coverDate
  --&gt; {http://purl.org/dc/elements/1.1/}creator
  --&gt; {http://purl.org/dc/elements/1.1/}description
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}link
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}link
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}link

{http://www.elsevier.com/xml/svapi/abstract/dtd}affiliation
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}affilname

{http://www.elsevier.com/xml/svapi/abstract/dtd}authors
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}author
  --&gt; {http://www.elsevier.com/xml/svapi/abstract/dtd}author

&lt;p&gt;
Now, some examples for myself to see how to get things.
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *

&lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;)

&lt;span style="color: #BA36A5;"&gt;coredata&lt;/span&gt; = results.find(&lt;span style="color: #008000;"&gt;'./{http://www.elsevier.com/xml/svapi/abstract/dtd}coredata'&lt;/span&gt;)

&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/svapi/abstract/dtd}srctype'&lt;/span&gt;).text
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/svapi/abstract/dtd}source-id'&lt;/span&gt;).text

&lt;span style="color: #8D8D84;"&gt;#&lt;/span&gt;&lt;span style="color: #8D8D84; font-style: italic;"&gt;authors = results.find('./{http://www.elsevier.com/xml/svapi/abstract/dtd}authors')&lt;/span&gt;
&lt;span style="color: #8D8D84;"&gt;#&lt;/span&gt;&lt;span style="color: #8D8D84; font-style: italic;"&gt;for author in results.find('./{http://www.elsevier.com/xml/svapi/abstract/dtd}authors'):&lt;/span&gt;
&lt;span style="color: #8D8D84;"&gt;#    &lt;/span&gt;&lt;span style="color: #8D8D84; font-style: italic;"&gt;print author.find('{http://www.elsevier.com/xml/ani/common}indexed-name').text&lt;/span&gt;

&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; creator &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://purl.org/dc/elements/1.1/}creator'&lt;/span&gt;):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; creator.attrib

&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://purl.org/dc/elements/1.1/}title'&lt;/span&gt;).text
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}publicationName'&lt;/span&gt;).text
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}volume'&lt;/span&gt;).text
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}pageRange'&lt;/span&gt;).text
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}coverDate'&lt;/span&gt;).text
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/svapi/abstract/dtd}citedby-count'&lt;/span&gt;).text
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}doi'&lt;/span&gt;).text

&lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; link &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; coredata.findall(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/svapi/abstract/dtd}link'&lt;/span&gt;):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; link.attrib[&lt;span style="color: #008000;"&gt;'rel'&lt;/span&gt;] == &lt;span style="color: #008000;"&gt;'scopus'&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; link.attrib[&lt;span style="color: #008000;"&gt;'href'&lt;/span&gt;]
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; link.attrib[&lt;span style="color: #008000;"&gt;'href'&lt;/span&gt;]

&lt;span style="color: #8D8D84;"&gt;# &lt;/span&gt;&lt;span style="color: #8D8D84; font-style: italic;"&gt;alternative xpath to get the link&lt;/span&gt;
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;"./{http://www.elsevier.com/xml/svapi/abstract/dtd}link/[@rel='scopus']"&lt;/span&gt;).attrib[&lt;span style="color: #008000;"&gt;'href'&lt;/span&gt;]
&lt;/pre&gt;
&lt;/div&gt;

j
22746
{'auid': '55569461200', 'seq': '1'}
Relating the electronic structure and reactivity of the 3d transition metal monoxide surfaces
Catalysis Communications
52
60-64
2014-07-05
2
10.1016/j.catcom.2013.10.028
http://api.elsevier.com/content/abstract/scopus_id/84901638552
http://www.scopus.com/inward/record.url?partnerID=HzOxMe3b&amp;scp=84901638552&amp;origin=inward
http://api.elsevier.com/content/search/scopus?query=refeid%282-s2.0-84901638552%29
http://www.scopus.com/inward/record.url?partnerID=HzOxMe3b&amp;scp=84901638552&amp;origin=inward

&lt;p&gt;
That is basically it. In the next sections, we basically recreate the previous functions from scopus.py using the xml data.
&lt;/p&gt;

&lt;div id="outline-container-sec-1" class="outline-2"&gt;
&lt;h2 id="sec-1"&gt;&lt;span class="section-number-2"&gt;1&lt;/span&gt; Authors&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-1"&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;get_author_link&lt;/span&gt;(EID):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(EID)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;authors&lt;/span&gt; = results.find(&lt;span style="color: #008000;"&gt;'./{http://www.elsevier.com/xml/svapi/abstract/dtd}authors'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; authors &lt;span style="color: #0000FF;"&gt;is&lt;/span&gt; &lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; &lt;span style="color: #008000;"&gt;'No authors found'&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;s&lt;/span&gt; = []

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; author &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; authors:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;name&lt;/span&gt; = author.find(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/ani/common}indexed-name'&lt;/span&gt;).text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;auid&lt;/span&gt; = author.attrib[&lt;span style="color: #008000;"&gt;'auid'&lt;/span&gt;]
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;s&lt;/span&gt; += [&lt;span style="color: #008000;"&gt;'&amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId={0}"&amp;gt;{1}&amp;lt;/a&amp;gt;'&lt;/span&gt;.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(auid, name)]

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; &lt;span style="color: #008000;"&gt;', '&lt;/span&gt;.join(s)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; get_author_link(&lt;span style="color: #008000;"&gt;'2-s2.0-84896759135'&lt;/span&gt;)
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; get_author_link(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;
&lt;pre class="example"&gt;
&amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=8724572500"&amp;gt;Thompson R.L.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=22981503200"&amp;gt;Shi W.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=6506329719"&amp;gt;Albenze E.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=23004637900"&amp;gt;Kusuma V.A.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=55676869000"&amp;gt;Hopkinson D.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=7003584159"&amp;gt;Damodaran K.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=55005205100"&amp;gt;Lee A.S.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=7004212771"&amp;gt;Kitchin J.R.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=6701399651"&amp;gt;Luebke D.R.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=24081524800"&amp;gt;Nulwala H.&amp;lt;/a&amp;gt;
&amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=55569461200"&amp;gt;Xu Z.&amp;lt;/a&amp;gt;, &amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=7004212771"&amp;gt;Kitchin J.R.&amp;lt;/a&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-2" class="outline-2"&gt;
&lt;h2 id="sec-2"&gt;&lt;span class="section-number-2"&gt;2&lt;/span&gt; Journal&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-2"&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;get_journal_link&lt;/span&gt;(EID):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(EID)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;coredata&lt;/span&gt; = results.find(&lt;span style="color: #008000;"&gt;'./{http://www.elsevier.com/xml/svapi/abstract/dtd}coredata'&lt;/span&gt;)

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;journal&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}publicationName'&lt;/span&gt;).text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;sid&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/svapi/abstract/dtd}source-id'&lt;/span&gt;).text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;s&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'&amp;lt;a href="http://www.scopus.com/source/sourceInfo.url?sourceId={sid}"&amp;gt;{journal}&amp;lt;/a&amp;gt;'&lt;/span&gt;

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; s.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(sid=sid, journal=journal)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; get_journal_link(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;
&lt;pre class="example"&gt;
&amp;lt;a href="http://www.scopus.com/source/sourceInfo.url?sourceId=22746"&amp;gt;Catalysis Communications&amp;lt;/a&amp;gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-3" class="outline-2"&gt;
&lt;h2 id="sec-3"&gt;&lt;span class="section-number-2"&gt;3&lt;/span&gt; DOI link&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-3"&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;get_doi_link&lt;/span&gt;(EID):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(EID)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;coredata&lt;/span&gt; = results.find(&lt;span style="color: #008000;"&gt;'./{http://www.elsevier.com/xml/svapi/abstract/dtd}coredata'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;doi&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}doi'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; doi &lt;span style="color: #0000FF;"&gt;is&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; &lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;: &lt;span style="color: #BA36A5;"&gt;doi&lt;/span&gt; = doi.text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;s&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'&amp;lt;a href="https://doi.org/{doi}"&amp;gt;doi:{doi}&amp;lt;/a&amp;gt;'&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; s.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(doi=doi)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; get_doi_link(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;

&lt;a href="https://doi.org/10.1016/j.catcom.2013.10.028"&gt;doi:10.1016/j.catcom.2013.10.028&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-4" class="outline-2"&gt;
&lt;h2 id="sec-4"&gt;&lt;span class="section-number-2"&gt;4&lt;/span&gt; Abstract link&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-4"&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;get_abstract_link&lt;/span&gt;(EID):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(EID)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;coredata&lt;/span&gt; = results.find(&lt;span style="color: #008000;"&gt;'./{http://www.elsevier.com/xml/svapi/abstract/dtd}coredata'&lt;/span&gt;)

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;data&lt;/span&gt; = get_abstract_info(EID)

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;title&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://purl.org/dc/elements/1.1/}title'&lt;/span&gt;).text.encode(&lt;span style="color: #008000;"&gt;'utf-8'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;link&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;"./{http://www.elsevier.com/xml/svapi/abstract/dtd}link/[@rel='scopus']"&lt;/span&gt;).attrib[&lt;span style="color: #008000;"&gt;'href'&lt;/span&gt;].encode(&lt;span style="color: #008000;"&gt;'utf-8'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;s&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'&amp;lt;a href="{link}"&amp;gt;{title}&amp;lt;/a&amp;gt;'&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; s.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(link=link, title=title)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; get_abstract_link(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;

&lt;a href="http://www.scopus.com/inward/record.url?partnerID=HzOxMe3b&amp;scp=84901638552&amp;origin=inward"&gt;Relating the electronic structure and reactivity of the 3d transition metal monoxide surfaces&lt;/a&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-5" class="outline-2"&gt;
&lt;h2 id="sec-5"&gt;&lt;span class="section-number-2"&gt;5&lt;/span&gt; Citation image&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-5"&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;get_cite_img_link&lt;/span&gt;(EID):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(EID)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;coredata&lt;/span&gt; = results.find(&lt;span style="color: #008000;"&gt;'./{http://www.elsevier.com/xml/svapi/abstract/dtd}coredata'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;doi&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}doi'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; doi &lt;span style="color: #0000FF;"&gt;is&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; &lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;: &lt;span style="color: #BA36A5;"&gt;doi&lt;/span&gt; = doi.text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;s&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'&amp;lt;img src="http://api.elsevier.com/content/abstract/citation-count?doi={doi}&amp;amp;httpAccept=image/jpeg&amp;amp;apiKey={apikey}"&amp;gt;&amp;lt;/img&amp;gt;'&lt;/span&gt;

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; s.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(doi=doi, apikey=MY_API_KEY, cite_link=&lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; get_cite_img_link(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;
&lt;img src="http://api.elsevier.com/content/abstract/citation-count?doi=10.1016/j.catcom.2013.10.028&amp;httpAccept=image/jpeg&amp;apiKey=5cd06d8a7df3de986bf3d0cd9971a47c"&gt;&lt;/img&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-6" class="outline-2"&gt;
&lt;h2 id="sec-6"&gt;&lt;span class="section-number-2"&gt;6&lt;/span&gt; Getting it all together&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-6"&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;def&lt;/span&gt; &lt;span style="color: #006699;"&gt;get_html_citation&lt;/span&gt;(EID):
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = get_abstract_info(EID)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;coredata&lt;/span&gt; = results.find(&lt;span style="color: #008000;"&gt;'./{http://www.elsevier.com/xml/svapi/abstract/dtd}coredata'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;s&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'{authors}, &amp;lt;i&amp;gt;{title}&amp;lt;/i&amp;gt;, {journal}, &amp;lt;b&amp;gt;{volume}{issue}&amp;lt;/b&amp;gt;, {pages}, ({year}), {doi}, {cites}.'&lt;/span&gt;

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;issue&lt;/span&gt; = &lt;span style="color: #008000;"&gt;''&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}issueIdentifier'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;is&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; &lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;issue&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'({})'&lt;/span&gt;.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}issueIdentifier'&lt;/span&gt;).text)

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;volume&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}volume'&lt;/span&gt;)
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; volume &lt;span style="color: #0000FF;"&gt;is&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; &lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;volume&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}volume'&lt;/span&gt;).text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;volume&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'None'&lt;/span&gt;

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;pages&lt;/span&gt; = &lt;span style="color: #008000;"&gt;''&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}pageRange'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;is&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; &lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;pages&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'p. '&lt;/span&gt; + coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}pageRange'&lt;/span&gt;).text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;elif&lt;/span&gt; coredata.find(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/svapi/abstract/dtd}article-number'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;is&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;not&lt;/span&gt; &lt;span style="color: #D0372D;"&gt;None&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;pages&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://www.elsevier.com/xml/svapi/abstract/dtd}article-number'&lt;/span&gt;).text
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;else&lt;/span&gt;:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;pages&lt;/span&gt; = &lt;span style="color: #008000;"&gt;'no pages found'&lt;/span&gt;


&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #BA36A5;"&gt;year&lt;/span&gt; = coredata.find(&lt;span style="color: #008000;"&gt;'{http://prismstandard.org/namespaces/basic/2.0/}coverDate'&lt;/span&gt;).text

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; s.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(authors=get_author_link(EID),
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   title=get_abstract_link(EID),
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   journal=get_journal_link(EID),
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   volume=volume,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   issue=issue,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   pages=pages,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   year=year,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   doi=get_doi_link(EID),
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   cites=get_cite_img_link(EID))
&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;'&amp;lt;ol&amp;gt;'&lt;/span&gt;
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt;,get_html_citation(&lt;span style="color: #008000;"&gt;'2-s2.0-84896759135'&lt;/span&gt;),&lt;span style="color: #008000;"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt;
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt;,get_html_citation(&lt;span style="color: #008000;"&gt;'2-s2.0-84924911828'&lt;/span&gt;),&lt;span style="color: #008000;"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt;
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;'&amp;lt;li&amp;gt;'&lt;/span&gt;,get_html_citation(&lt;span style="color: #008000;"&gt;'2-s2.0-84901638552'&lt;/span&gt;),&lt;span style="color: #008000;"&gt;'&amp;lt;/li&amp;gt;'&lt;/span&gt;
&lt;span style="color: #0000FF;"&gt;print&lt;/span&gt; &lt;span style="color: #008000;"&gt;'&amp;lt;/ol&amp;gt;'&lt;/span&gt;
&lt;/pre&gt;
&lt;/div&gt;
&lt;ol&gt;
&lt;li&gt; &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=8724572500"&gt;Thompson R.L.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=22981503200"&gt;Shi W.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=6506329719"&gt;Albenze E.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=23004637900"&gt;Kusuma V.A.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=55676869000"&gt;Hopkinson D.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=7003584159"&gt;Damodaran K.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=55005205100"&gt;Lee A.S.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=7004212771"&gt;Kitchin J.R.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=6701399651"&gt;Luebke D.R.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=24081524800"&gt;Nulwala H.&lt;/a&gt;, &lt;i&gt;&lt;a href="http://www.scopus.com/inward/record.url?partnerID=HzOxMe3b&amp;scp=84896759135&amp;origin=inward"&gt;Probing the effect of electron donation on CO2 absorbing 1,2,3-triazolide ionic liquids&lt;/a&gt;&lt;/i&gt;, &lt;a href="http://www.scopus.com/source/sourceInfo.url?sourceId=21100199840"&gt;RSC Advances&lt;/a&gt;, &lt;b&gt;4(25)&lt;/b&gt;, p. 12748-12755, (2014-03-17), &lt;a href="https://doi.org/10.1039/c3ra47097k"&gt;doi:10.1039/c3ra47097k&lt;/a&gt;, &lt;img src="http://api.elsevier.com/content/abstract/citation-count?doi=10.1039/c3ra47097k&amp;httpAccept=image/jpeg&amp;apiKey=5cd06d8a7df3de986bf3d0cd9971a47c"&gt;&lt;/img&gt;. &lt;/li&gt;

&lt;li&gt; &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=55569461200"&gt;Xu Z.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=7004212771"&gt;Kitchin J.R.&lt;/a&gt;, &lt;i&gt;&lt;a href="http://www.scopus.com/inward/record.url?partnerID=HzOxMe3b&amp;scp=84924911828&amp;origin=inward"&gt;Relationships between the surface electronic and chemical properties of doped 4d and 5d late transition metal dioxides&lt;/a&gt;&lt;/i&gt;, &lt;a href="http://www.scopus.com/source/sourceInfo.url?sourceId=28134"&gt;Journal of Chemical Physics&lt;/a&gt;, &lt;b&gt;142(10)&lt;/b&gt;, 104703, (2015-03-14), &lt;a href="https://doi.org/10.1063/1.4914093"&gt;doi:10.1063/1.4914093&lt;/a&gt;, &lt;img src="http://api.elsevier.com/content/abstract/citation-count?doi=10.1063/1.4914093&amp;httpAccept=image/jpeg&amp;apiKey=5cd06d8a7df3de986bf3d0cd9971a47c"&gt;&lt;/img&gt;. &lt;/li&gt;

&lt;li&gt; &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=55569461200"&gt;Xu Z.&lt;/a&gt;, &lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;authorId=7004212771"&gt;Kitchin J.R.&lt;/a&gt;, &lt;i&gt;&lt;a href="http://www.scopus.com/inward/record.url?partnerID=HzOxMe3b&amp;scp=84901638552&amp;origin=inward"&gt;Relating the electronic structure and reactivity of the 3d transition metal monoxide surfaces&lt;/a&gt;&lt;/i&gt;, &lt;a href="http://www.scopus.com/source/sourceInfo.url?sourceId=22746"&gt;Catalysis Communications&lt;/a&gt;, &lt;b&gt;52&lt;/b&gt;, p. 60-64, (2014-07-05), &lt;a href="https://doi.org/10.1016/j.catcom.2013.10.028"&gt;doi:10.1016/j.catcom.2013.10.028&lt;/a&gt;, &lt;img src="http://api.elsevier.com/content/abstract/citation-count?doi=10.1016/j.catcom.2013.10.028&amp;httpAccept=image/jpeg&amp;apiKey=5cd06d8a7df3de986bf3d0cd9971a47c"&gt;&lt;/img&gt;. &lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;


&lt;div id="outline-container-sec-7" class="outline-2"&gt;
&lt;h2 id="sec-7"&gt;&lt;span class="section-number-2"&gt;7&lt;/span&gt; Finally getting my documents&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-7"&gt;
&lt;p&gt;
Here we get the EIDs from a search query. We use these in the next section to get a new bibliography.
&lt;/p&gt;

&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; requests
&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; json
&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; my_scopus &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; MY_API_KEY
&lt;span style="color: #BA36A5;"&gt;resp&lt;/span&gt; = requests.get(&lt;span style="color: #008000;"&gt;"http://api.elsevier.com/content/search/scopus?query=AU-ID(7004212771)&amp;amp;field=eid,aggregationType&amp;amp;count=100"&lt;/span&gt;,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   headers={&lt;span style="color: #008000;"&gt;'Accept'&lt;/span&gt;:&lt;span style="color: #008000;"&gt;'application/json'&lt;/span&gt;,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;    &lt;span style="color: #008000;"&gt;'X-ELS-APIKey'&lt;/span&gt;: MY_API_KEY})

&lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = resp.json()

&lt;span style="color: #0000FF;"&gt;return&lt;/span&gt; [[&lt;span style="color: #006FE0;"&gt;str&lt;/span&gt;(r[&lt;span style="color: #008000;"&gt;'eid'&lt;/span&gt;]), &lt;span style="color: #006FE0;"&gt;str&lt;/span&gt;(r[&lt;span style="color: #008000;"&gt;'prism:aggregationType'&lt;/span&gt;])] &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; r &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; results[&lt;span style="color: #008000;"&gt;'search-results'&lt;/span&gt;][&lt;span style="color: #008000;"&gt;"entry"&lt;/span&gt;] &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;str&lt;/span&gt;(r[&lt;span style="color: #008000;"&gt;'prism:aggregationType'&lt;/span&gt;]) == &lt;span style="color: #008000;"&gt;'Journal'&lt;/span&gt;]
&lt;/pre&gt;
&lt;/div&gt;


&lt;table id="my-eids" border="2" cellspacing="0" cellpadding="6" rules="groups" frame="hsides"&gt;


&lt;colgroup&gt;
&lt;col  class="left" /&gt;

&lt;col  class="left" /&gt;
&lt;/colgroup&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84924911828&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84923164062&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84924778427&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84924130725&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84901638552&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84898934670&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84896759135&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84896380535&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84896585411&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84916613197&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84908637059&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84880986072&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84881394200&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84873706643&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84876703352&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84867809683&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84864914806&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84865730756&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84864592302&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84863684845&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84866142469&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-84861127526&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-80052944171&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-80051809046&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-79953651013&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-79952860396&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-77956568341&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-77954747189&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-77956693843&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-77949916234&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-77955464573&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-72049114200&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-73149124752&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-73149109096&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-67449106405&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-63649114440&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-60849113132&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-58649114498&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-40949100780&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-33750804660&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-20544467859&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-15744396507&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-9744261716&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-13444307808&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-3042820285&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-2942640180&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-0142023762&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-0141924604&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-0037368024&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;

&lt;tr&gt;
&lt;td class="left"&gt;2-s2.0-0037197884&lt;/td&gt;
&lt;td class="left"&gt;Journal&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-8" class="outline-2"&gt;
&lt;h2 id="sec-8"&gt;&lt;span class="section-number-2"&gt;8&lt;/span&gt; And my html bibliography&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-8"&gt;
&lt;p&gt;
This generates my blog bibliography page..
&lt;/p&gt;
&lt;div class="org-src-container"&gt;

&lt;pre class="src src-python"&gt;&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; scopus_xml &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; *

&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; requests
&lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; json
&lt;span style="color: #0000FF;"&gt;from&lt;/span&gt; my_scopus &lt;span style="color: #0000FF;"&gt;import&lt;/span&gt; MY_API_KEY
&lt;span style="color: #BA36A5;"&gt;resp&lt;/span&gt; = requests.get(&lt;span style="color: #008000;"&gt;"http://api.elsevier.com/content/search/scopus?query=AU-ID(7004212771)&amp;amp;field=eid,aggregationType&amp;amp;count=100"&lt;/span&gt;,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   headers={&lt;span style="color: #008000;"&gt;'Accept'&lt;/span&gt;:&lt;span style="color: #008000;"&gt;'application/json'&lt;/span&gt;,
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;    &lt;span style="color: #008000;"&gt;'X-ELS-APIKey'&lt;/span&gt;: MY_API_KEY})

&lt;span style="color: #BA36A5;"&gt;results&lt;/span&gt; = resp.json()

&lt;span style="color: #BA36A5;"&gt;data&lt;/span&gt; = [[&lt;span style="color: #006FE0;"&gt;str&lt;/span&gt;(r[&lt;span style="color: #008000;"&gt;'eid'&lt;/span&gt;]), &lt;span style="color: #006FE0;"&gt;str&lt;/span&gt;(r[&lt;span style="color: #008000;"&gt;'prism:aggregationType'&lt;/span&gt;])] &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; r &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt;
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   results[&lt;span style="color: #008000;"&gt;'search-results'&lt;/span&gt;][&lt;span style="color: #008000;"&gt;"entry"&lt;/span&gt;] &lt;span style="color: #0000FF;"&gt;if&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;str&lt;/span&gt;(r[&lt;span style="color: #008000;"&gt;'prism:aggregationType'&lt;/span&gt;]) == &lt;span style="color: #008000;"&gt;'Journal'&lt;/span&gt;]


&lt;span style="color: #0000FF;"&gt;with&lt;/span&gt; &lt;span style="color: #006FE0;"&gt;open&lt;/span&gt;(&lt;span style="color: #008000;"&gt;'../publications.html.mako'&lt;/span&gt;, &lt;span style="color: #008000;"&gt;'w'&lt;/span&gt;) &lt;span style="color: #0000FF;"&gt;as&lt;/span&gt; f:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   f.write(&lt;span style="color: #008000;"&gt;'''&amp;lt;%inherit file="_templates/site.mako" /&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;lt;article class="page_box"&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;lt;%self:filter chain="markdown"&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;h1&amp;gt;Online collections of our work&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;Pick your favorite:&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;lt;li&amp;gt;&amp;lt;a href="http://orcid.org/0000-0003-2625-9232"&amp;gt;orcid:0000-0003-2625-9232&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;li&amp;gt;&amp;lt;a href="http://www.researcherid.com/rid/A-2363-2010"&amp;gt;researcherid:A-2363-2010&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;li&amp;gt;&amp;lt;a href="http://www.scopus.com/authid/detail.url?origin=AuthorProfile&amp;amp;authorId=7004212771"&amp;gt;scopusid:7004212771&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;li&amp;gt;&amp;lt;a href="https://scholar.google.com/citations?user=jD_4h7sAAAAJ"&amp;gt;Google Scholar&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;li&amp;gt;&amp;lt;a href="https://www.researchgate.net/profile/John_Kitchin"&amp;gt;Research Gate&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;li&amp;gt;&amp;lt;a href="https://www.growkudos.com/profiles/40205"&amp;gt;Kudos&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;h1&amp;gt;Publications&amp;lt;/h1&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;The authors are linked to their Scopus page, the title linked to the Scopus abstract, the journal linked to the Scopus journal page, and the DOI is linked to https://doi.org which normally redirects you to the journal page.&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;ol reversed="reversed"&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;'''&lt;/span&gt;)

&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #0000FF;"&gt;for&lt;/span&gt; eid,&lt;span style="color: #006FE0;"&gt;type&lt;/span&gt; &lt;span style="color: #0000FF;"&gt;in&lt;/span&gt; data:
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   &lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   f.write(&lt;span style="color: #008000;"&gt;'&amp;lt;li&amp;gt;{}&amp;lt;/li&amp;gt;'&lt;/span&gt;.&lt;span style="color: #006FE0;"&gt;format&lt;/span&gt;(get_html_citation(eid)))
&lt;span style="color: #9B9B9B; background-color: #EDEDED;"&gt; &lt;/span&gt;   f.write(&lt;span style="color: #008000;"&gt;'''&amp;lt;/ol&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000;"&gt;&amp;lt;/%self:filter&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;&amp;lt;/article&amp;gt;&lt;/span&gt;
&lt;span style="color: #008000;"&gt;'''&lt;/span&gt;)
&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;

&lt;div id="outline-container-sec-9" class="outline-2"&gt;
&lt;h2 id="sec-9"&gt;&lt;span class="section-number-2"&gt;9&lt;/span&gt; Summary&lt;/h2&gt;
&lt;div class="outline-text-2" id="text-9"&gt;
&lt;p&gt;
The XML format is not that intuitive to me. It takes some practice writing robust code, e.g. sometimes the find command does not find anything, and then there is not text attribute to get, so you should check for success on finding things. Also, some text is unicode, and you have to take care to encode it, which my library does not do uniformly. Finally, not all journals have things like volume or issue. My formatting code is not super flexible, so these bibliography entries show None in them occasionally. Still, it is not too bad, and this enables a lot of analysis of your publications, as well as displaying them in different ways. See the result of this page here: &lt;a href="http://kitchingroup.cheme.cmu.edu/publications.html"&gt;http://kitchingroup.cheme.cmu.edu/publications.html&lt;/a&gt;
&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;Copyright (C) 2015 by John Kitchin. See the &lt;a href="/copying.html"&gt;License&lt;/a&gt; for information about copying.&lt;p&gt;&lt;p&gt;&lt;a href="/org/2015/04/06/Using-the-Scopus-api-with-xml-output.org"&gt;org-mode source&lt;/a&gt;&lt;p&gt;&lt;p&gt;Org-mode version = 8.2.10&lt;/p&gt;
]]></content:encoded>
    </item>
  </channel>
</rss>
