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

はじめに

今回参考にした書籍はコチラ


Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド

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

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

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

臨床試験登録

f:id:Medicmed:20180524044841p:plain

「閲覧」

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

f:id:Medicmed:20180524045001p:plain

このページから

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

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

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

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

終わり。 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください