前回は大層なことを公言しましたが、今後も今までどおりちまちまとプログラミングで遊んでいきます。よろしくお願いします。
まずは、以前から取り組んでいたものを完成させようかと思います。
現在こんな感じ
前回の医薬品等承認情報関連ファイルの読み込みは、URLの表示まで完成しました。
これは簡単で、file_get_contentsを使用して、htmlファイルを読み込んだだけです。
そこからHTMLソース内部の文字を検索して、URLを取得するまでの流れをforeachで見つからなくなるまで繰り返しています。
これにより、最新のURL一つだけではなく、複数のURLを配列として取得できます。
目標はCSVファイル内部の文字列を自動表記することですので、ここからはCSVファイルをHTMLに変換して表示させなければなりません。
今回はスクレイピングによって取得したURLからCSVファイルを読み込み、CSVファイルの内容を配列に組み込んで表示しています。fgetcsvだと遅いそうなので、PHP5以降から追加されたSplFileObjectクラスを使用してみました。
※ちなみに、SplFileObjectは外部パスを使用できないので、URLを引っ張ってくるにはNoRewindIteratorクラスも一緒に使います。
ということで、このページは文字を直接的に表示するHTMLは一切使っていません。ちなみにコード自体は20行ほどです。PHPなので、ソースコードを見られないのは嬉しいですね。素人あるあるですが、なかなかに煩雑なコードなので…。
で、結果として自動的にPMDAから医薬品等承認情報関連ファイルを取得し、CSVの文字コードをコンバート。そこから医薬品名と成分名、製薬会社までの文字列を取得して表示させています。
ちなみに、単純にCSVファイルをfile_get_contentsやSplFileObjectで直接取得すると以下のように文字化けするので、ひと手間加えています(下図はSplFileObjectで直接取得してforeachで配列としたものをvar_dumpで表示したもの)。
次回はCSVファイル内の文字を表に組み込んで、読みやすくするところまで行きたいと思います。
最終目標は、医薬品文字列に添付文書のリンクを貼り、更新内容をスクレイピングで添付文書から拾って表示するところまでいけるといいかなーと思っています。
ご質問要望あればこちらまで