5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Pythonではじめてのスクレイピング【Mac】

Posted at
  • プログラミング歴42日の素人が書いています。ご注意ください。

#はじめに

Webスクレイピングたのしい!
きほんのやり方をまとめます。

##環境

  • MacBookAir-mid2014

  • macOS-Mojave

  • Python 3.7.4

#「requests」ライブラリのインストール

(インストール済みの場合はスキップ)
ターミナルに以下を打ち込み、ライブラリをインストールします。
requestsはWebサイトから情報の取得を行います。

pip3 install requests

#「Beautiful Soup」ライブラリのインストール

(インストール済みの場合はスキップ)
ターミナルに以下を打ち込み、ライブラリをインストールします。
Beautiful SoupはHTMLの解析を行います。

pip3 install BeautifulSoup4

#あるWebサイトから必要な情報のみ抜き出す

import requests
from bs4 import BeautifulSoup

with open('sample.csv','w') as f:

    for i in range(page数):

        result = requests.get('https://example.com/page/{}/'.format(i))
        print(result)
        soup = BeautifulSoup(result.text, 'html.parser')
        list = soup.find_all('h2', class_='クラス名')

        for h2 in list:
            data = h2.a['title']
            f.write('{0}\n'.format(data))

##ライブラリのインポート

import requests
from bs4 import BeautifulSoup

##CSVファイルの作成

with open('sample.csv','w') as f:

sample.csvファイルを作成。第2引数wは「書き込み専用」。

##繰り返し処理

for i in range(page数):

page数分繰り返します。(page数とか無いばあいはスキップ)

##webサイト情報の取得

result = requests.get('https://example.com/page/{}/'.format(i))
print(result)

example.comにアクセスします。ループを回すごとに、iの値が変化し、ページ番号が変化します。
print(result)はステータスコードを表示します。表示される値が[200]ならhtmlリクエストが正常に処理されています。

##HTMLデータへの変換

soup = BeautifulSoup(result.text, 'html.parser')

BeautifulSoup4を利用して、さきほど取得した文字データをhtmlと認識して扱えるようにパースします。

##任意のクラス名で検索して抜き出す

list = soup.find_all('h2', class_='クラス名')

ここではh2タグの中で、特定のクラス名がついている要素を検索しています。

##さらにデータの絞り込みとCSVへの書き込み

for h2 in list:
            data = h2.a['title']
            f.write('{0}\n'.format(data))

find_allすると配列データになっています。
配列からひとつづつ抜き出して、h2という変数に格納します。

h2.aのようにすると、h2内のaタグにアクセスすることができます。(子要素へのアクセス)
さらにh2.a['title']のように続けると、h2内のaタグのタイトル属性にもアクセスできます。
たとえば、以下のようなhtmlだったなら、

<h2><a href="http://something.com" title="Go to Somewhare"></a></h2>

Go to Somewhareの部分を抜き出しています。

最終行は、CSVへの書き込みを行っています。
なお、\nは改行です。

#まとめ

ライブラリを使うことで、非常にすくないコード量でスクレイピングが実現できます。
また、過度なスクレイピングは相手サーバに迷惑がかかるので気をつけましょう。

5
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?