文献整理2020(11) PubMedの検索結果をもとにしてscrapingする準備

 昨晩BeautifulSoupでPubMedにアクセスするところまでこぎつけたのであったが、お試しのつもりのテストケースで軽く3931件ヒットさせてしまった。検索結果のページというのは最大でもヒットした文献を200ずつしか表示しないのである。しかもBeautifulSoupでヒットした200のデータを別々にフォルダを掘りながら格納していくとか、そこから抜き出したdoiを見て大元の論文出版サイトにアクセスしたり、オープンアクセスなら全文を、そうでなければアブストラクト(要約)をテキストファイルに保存することは、まだまだ修業中の身ゆえできないのである。
 これは考えてみれば、テキトーに手作業で切り抜けることができない領域にチャレンジできるチャンス(窮地に追い込まれたようにも見えるが)なので、ここから冬休みまでに文献の鉱脈を探して、次のヤマにとりかかりたいわけである。
 そこでまずPubMedの検索結果のページを研究するのだが、これはこれで本当にすごいページである。
 一方、PubMedには検索結果をSaveするボタンがあり、検索でヒットした全文献を5種のFormat(Summary(text)/PubMed/PMID/Absract(text)/CSV)のいずれかを指定して保存できる。このCSV formatのファイルにはDOIのアドレスとPMIDが含まれるので、DOIのアドレスから取得したページのデータを、PMIDで掘ったディレクトリに流し込んだりできそうである。すなわち、取得したCSVファイルをnysolで処理してDOIとPMIDのペアを作っておいて、順番にBeautifulSoupでダシをとるという戦略を試してみることにする。
 後日記(2020.12.01)>blitzさんもご紹介のGoogle版Jupyter Notebookのcolabがすごい。GithubのノートブックをURLで開いてみることができ、初級プログラミング講座のバーチャル体験によさそうである。
 これを利用して、ファイルから一行読んだのを文字列をもとに文献のwebサイトにアクセスして公開されているならば全文を取得するところまで大体できたのであるが、いざ45,000件のファイルからDOIを読み込んではbeautifulsoupにアクセスさせるのだが、ループを回すとうまくURLが解決できなくなる(のは、初期化に失敗しているのだろうか)。
 後日記(2020.12.02)>作業場所によってプラットフォームが切り替わる筆者のような境遇でも、Colabなら全くその違いが影響しない。すなわち職場でWindows 10基幹マシンで試している続きを帰宅してからMBAで続けることができている。もっとも、クラウドの恩恵についてはEvernoteTeX shopやZOTEROについてもDropbox経由で十分身にしみているはずで、そんなに大騒ぎするようなことでもないはずである。
 とはいえ、少しずつ手応えを感じられるようになってくるとうれしいのは確かで、
取得したソース(soup)に対して
fulltext = soup.find('div', class_='article fulltext-view ')
print(fulltext.text)
 たった2行で要約から始まって参考文献リストのあたりがタグ抜きで表示されたときには魂が震えた。

本ブログではamazon associate広告を利用しています。