Pythonを導入から
過去に業務でPythonを使用したことはあったのですが、しばらくの間離れていたところ、ほとんど最初から学び直す羽目になりました。
会社の都合で使用する機会がありそうなので、触ってみることにしました。
ただ言語を学ぶのだと面白く無さそうなので、ついでにwebスクレイピングやクロールをしながら学んでいこうと思います。
実行環境
pythonは2系がサポート終了するので、3系でやることにします。
2系の経験がある方は2系と3系の違いは以下のようなまとめてくれている記事を参照するといいと思います。
- https://www.python-izm.com/tips/difference_in_version/
- https://qiita.com/cstoku/items/353fd4b0fd9ed17dc152
スクレイピングのための道具を準備する
まず手始めにこちらを参考にスクレイピングをやってみます。
pythonとBeautiful Soupをインストールします。
内容はざっくり説明すると、
- urllibを使用し、HTTPリクエストする
- Beautiful soupを使い、取得したHTMLをパースする
- 内容を解析し、処理する
です。
参考記事ではurllib2を使用していますが、python3系ではurllibというライブラリを使用します。
共にpythonの組み込みライブラリです。
csvに出力しているところは、必要に応じてでいいと思うので、とりあえず今はやらないこととします。
ライブラリをインポートする
まず必要なライブラリをインポートし、コード中で使用できるようにします。
ちなみに、# coding: UTF-8
の記述はpython3系では不要です。
先ほどのpython2系と3系の違いをまとめてくれている記事で、2系では文字列型としてunicode型とstr型が有ったが、3系は全てunicodeになり、str型オンリーになったと書いてありました。
モジュールのインポート
import math
他の言語でも見るやつです。
Pythonでは関数やクラスなどをまとめて書いたファイルをモジュールという。
このモジュールをimportする文です。
複数インポートする
import a, b, c
とできます。が・・・
PEP8というpythonの標準ライブラリなどに関するコーディング規約があります。
このPEP8によるとこのカンマ区切りのまとめてimportは推奨されないとか。なので、
import a
import b
import ...
と書くことが推奨のようです。
オブジェクトのインポート
from math import pi
モジュールmath
からオブジェクトpi
をインポートする書き方です。
複数オブジェクトをインポートする時はカンマで区切って記載できます。
from math import pi, radians
PEP8ではこちらはカンマ区切りで複数インポートしてOKとのこと。
もっと大量のオブジェクトをインポートしたい時は()で括って複数行にできます。
import math import (
pi,
radians,
sin,
....
)
さて、これで使用するライブラリをインポートする書き方が分かりました。
早速、urllib
とBeautiful Soup
をインポートしてみます。
import urllib.request
from bs4 import BeautifulSoup
ファイルを読み込み
次に、早速どこかのURLにリクエストを飛ばし、HTMLを取得してみます。
html = urllib2.urlopen('https://www.yahoo.co.jp')
これだけです。便利な世の中ですね。
次にこの取得したhtmlをパースします。
html = urllib.request.urlopen('https://www.yahoo.co.jp')
soup = BeautifulSoup(html, 'html5lib')
print(soup)
これで取得したhtmlをパースできました。