【初心者のPython入門】Webスクレイピングとクローリング

00 2 728x409 - 【初心者のPython入門】Webスクレイピングとクローリング
今回は、特定のURL内にある各リンクにもアクセスし、そのリンク内の内容を抽出する基本的なクローリングプログラムを作成していきます。
当然、特定のWebサイトによってHTML構造等が異なる場合があるのと、取得したい情報も異なるかと思いますが、まずはともあれクローリングはこのように行うことができますということがお伝えできればなと思います。
 
 
 
 

1. プログラム概要

 
 
今回の本プログラムは、簡単に作成できるクローリングプログラムになります。
クローリングとは、特定のWebサイト内を巡回する技術の総称になります。そのため、実際にクローリングした先の情報を収集する技術としては、Webスクレイピングという技術となります。
 
 
クローラリングといっても、様々な種類があります。
そしてその種類としては、利用用途によって変化します。例えば、今回の本プログラムのようにWebサイト内のテキストを抽出するプログラムや、特定の動画だけを抽出(ダウンロード)を行うプログラムなどです。
 
 
そして一番のメリットは、なんといっても情報収集の自動化です。
本プログラムは、そのきっかけなどに利用していただければ幸いです。
 
 

2. 必要なモジュールのインストール

 
 
 
 
ここでは利用するモジュールとして、request、BeautifulSoup、timeを利用します。
 
 
requestモジュールは、HTTP通信を行うためのライブラリに特化した機能を備えています。
WebサーとのダウンロードやRESTAPI等の利用が比較的簡単に行うことができます。
このモジュールを利用して特定URLに対してリクエストを行い、結果を取得します。
 
 
BeautifulSoupモジュールは、pythonのライブラリの一つでスクレイピングに特化した機能を備えています。
スクレイピングは、端的に言うと取得したHTMLから任意の情報を抽出する技術を指します。
 
 
timeモジュールついては、pythonの標準モジュールとして備えられているので、特にインストールする必要はありません。
 
 

3. 特定のURLからデータを取得

 
 
 
 
ここでは、まず任意の特定URLを変数urlに代入して利用します。
req.urlopen()を利用して、特定URLから結果を取得し、変数resに格納しています。
 
 
本プログラムでは、特定のWebサイトを指定していますが、特定のサイトを指定する際にどのようなHTML構造かを考慮して設計しなければならないことを前提としてください。
つまり、特定のWebサイトによっては取得したいデータの格納先が異なることがあるため、HTML構造をよく理解してコーディングしていきましょう。
 
 

4. 特定URL内にあるリンク抽出

 
 
 
 
ここでは、先ほど取得したデータを格納した変数resを利用します。
BeautifulSoupモジュールを利用して、取得データをHTML情報を解析し、そのデータを変数soupに格納しています。
 
 
次に解析したデータを格納している変数soupから任意のタグをselectメソッドを利用して選択・抽出し、その取り出したデータを変数linksに格納しています。
 
 
for文では、変数links内のデータを回して、タイトルとサイト内のリンク先の各URLをリスト化していきます。
 
 

5. テキストデータ抽出 -> 各ファイル保存

 
 
 
 
ここでは、リスト化したデータを格納している変数resultに対して、titleとurlとしてfor文で回していきます。
 
 
また、本プログラムでクロール先はこのサイトを指定しているので、気にすることはありませんが、本来はクローリングを行う際の注意点があります。
 
 
・Webサイトの利用規約に則って行うこと
・アクセス制限内容を守ること
・サーバに負荷をかけないこと
 
 
基本的に上記の内容になりますが、当然サイトによっての規約内容で異なるので、よく理解してクローリングを行いましょう。
 
 
次にサーバに負荷をかけないためにtime.sleepを利用して1秒間隔アクセスするようコードを追加しています。
 
 
次に、リスト化したデータ内にある各URLからデータを取得した内容を変数res_1に格納し、変数res_1のデータを解析したデータを変数soup_1に格納していきます。
その後、解析したデータ内の<p>タグのテキストデータを抽出し、変数p_listに格納していきます。
 
 
最後に、抽出したテキストデータごとにwith openを利用してファイルを作成し、このファイル内にテキストデータを書き込んでいきます。
 
 
全体のコードを下記に記載しておきます。
コピーして利用してみてください。
 
 
 
 
今回の記事を読んでいただき、ありがとうございました。
 
 

ABOUTこの記事をかいた人

sugi

大学卒業後、IT企業に就職を果たす。システム開発・人工知能に触れながら大手企業と業務をこなす。2年半後脱サラし、現在フリーランス活動中。 2019年2月から起業する予定。 自社サービス及び製品を開発し、売り上げを立てている。