【Python】臨床研究に必要なデータ収集を自動化するスキル②

この記事をシェアする

はじめに

前回の記事ではシェルスクリプトとしてPythonでの処理を行いました。

www.medicalmed.press

今回は臨床試験登録サイトUMINのリンク先をまとめて取得する方法を紹介します。

取得したすべてのリンク先について処理を行えば、必要なデータが一括で取得することができます。

まずは臨床試験サイトUMINのウェブページを確認してみましょう。

Pythonで学ぶあたらしい統計学の教科書

Pythonで学ぶあたらしい統計学の教科書

 

 

臨床試験登録

f:id:Medicmed:20180524044841p:plain

「閲覧」

の箇所をクリックすると欲しい情報が載っているページにアクセスすることができます。

f:id:Medicmed:20180524045001p:plain

このページから

  1. 試験名
  2. 対象疾患
  3. 目的
  4. 主要アウトカム

だけの情報を抜き取ってくるとは既にやりました。

www.medicalmed.press

f:id:Medicmed:20180501003034p:plain

 

【スポンサーリンク】
 

完成したプログラムはコチラ!

f:id:Medicmed:20180524050116p:plain

 このようにすべてのリンク先を取得することができました。

 

Pythonコードを書いていこう!

f:id:Medicmed:20180524050421p:plain

今回書いたコードはコチラです。

【スポンサーリンク】
 

 

aタグの取得

まずは<a>タグの習得をすることから始まります。

ウェブページがどのような構成になっているか確認するようにしましょう。

f:id:Medicmed:20180524050747p:plain

requestsモジュールを使用して、臨床試験登録サイトUMINのページを取得します。

次にHTMLのText部分だけ欲しいので、"html.text"という情報をtextという新しい変数に格納します。

次にその変数をBeautifulSoupに使っていきます。

<a>タグの部分だけが欲しいため"soup.find_all("a")”としてて取得していきます。

取ってきたリンクをリストに格納していくため"list_links"という空リストをあらかじめ作成しておきます。

 

閲覧のリンク先だけを取得してくる

aタグのstringが"閲覧"になっているリンク先を取得するという設定にします。

リンク先だけを取得するにはaタグのattrs['href']とします。

閲覧部分のリンク先をhrefという変数に格納していきます。

 

相対パスから絶対パスに変換する必要がある

取得してきたリンク先は相対パスのままなので、このままでは使用できません。

そのため相対パスから絶対パスに書き換える必要があります。

そこでurljoinモジュールを使用します。

まずベースとなる部分をbase変数に格納しておきます。

そして取ってきたリンク先とくっつけるということです。

この作業が終わると、list_linksというリストに追加して完了です。

個別のリンク先を取得するにはfor文を回せばオッケーです。

【スポンサーリンク】
 

 

 

取得してきたリンクのチェックをしてみます。

https://upload.umin.ac.jp/cgi-open-bin/ctr/ctr_view.cgi?recptno=R000037240

一番先頭にあるのがコチラなので試しにやってみます。

f:id:Medicmed:20180524053036p:plain

ちゃんと欲しいページに飛びました。

 

 

ぜひ参考にしてみてください。

終わり。