【エロプログラミング講座#2】例の保存ランキングの動画を自動で保存する
前回の続きです。
エロプログラミング講座#2
4.関数とクラスの基礎
前回インストールしたBeautifulSoup4とは、WEBページのデータをPythonプログラムで扱いやすいデータにしてくれるライブラリです。
BeautifulSoup4に限らず、pipでインストールしたライブラリは、プログラムでインポートしなければ使用することはできません。
さっそくライブラリを使ってWebページのスクレイピングを行いたいところですが、その前にもう少しPythonのメソッドについて説明します。
メソッド、または関数とも言われますが、プログラミング言語の殆どには一連の処理をひとまとめにするための仕組みがあります。この記事では関数と呼びます。
例えば、以下は数字を3倍にして、その結果を返却する関数です。
ただし、0以下の数字は計算せずに終了します。
def to_triple(num: int) -> None:
if num <= 0:
return
return num * 3
def とは関数を定義するための宣言です。関数名は自由に決めて良いです。
いちおう、予約語など使ってはいけない単語もありますが、この講座のコードを元にするのであれば問題ありません。
関数名の後には、必ず()を書きます。この中は何も書かなくても良いです。
もし、関数に何か値を与えたい場合は、好きな変数名を記述します。この関数が受け取る値は”引数”と言います。
関数内では好きな処理を書いてもらって構いません。何か値を返却したい場合は、return文を使用します。この関数から返却される値を”返り値”または”戻り値”と言います。
記述した関数は以下のように使用できます。
to_triple(3) # 引数が3、返り値が9
別の例です。
def multiply(x: int, y: int) -> int:
return x * y
multiply(12, 2) # 引数はxが12、yが2。x(12) * y(2) = 24が返り値
次にクラスについて説明します。
クラスとは、基本的な処理、関数、変数をひとまとめにしたものです。
例えば、上記の「to_triple」関数と「multiply」関数はどちらも計算を行っています。これをクラスを使ってひとまとめにすると、こうなります。
class Calc:
def to_triple(self, num: int) -> int:
return num * 3
def multiply(self, x: int, y: int) -> int:
return x * y
classと宣言した後に、好きなクラス名を記述します。
クラス内では好きな関数や処理を書いてください。
クラスは以下の様に使用します。
calc = Calc() # 「calc」変数にCalcクラスの分身を格納
calc.to_triple(3) #「calc」変数の中の「Calc」クラスの分身の中の「to_triple」関数を実行
calc.multiply(1, 2) #「calc」変数の中の「Calc」クラスの分身の中の「multiply」関数を実行
# 分身はいくつでも作ることができ、また分身を格納する変数の名前は何でも良い
xyz = Calc()
xyz.to_triple(3)
多くの初学者にとって、このクラスという概念は、非常に理解しづらいものです。どのような入門書や初心者向けのサイトにおいても、この部分は丁寧かつ長文で解説されています。
当講座では、実際にエロプログラミングを実践する上で理解を進めていくので、現状は深く理解する必要はありません。
OET(オン・ジ・エロプログラミング・トレーニング)です。
さて、プログラム全般に言えますが、突き詰めると行っている事はすべて「入力と出力」しかありません。
どのような処理がされるのか? 等という難しいことは考えず、
Xというデータを入力したら何が出力されるのか? を意識しましょう。
5.スクレイピングの基礎
いよいよライブラリを使用したプログラムを書いていきます。
前回作成した「hello.py」の一番上に、以下の必要なライブラリのインポート文を記述してください。
ちなみに、「hello.py」の中に前回のコードが残っている場合は、全て削除してしまって構いません。
from bs4 import BeautifulSoup
import requests
とりあえず、試しに適当なサイトのデータをスクレイピングしてみましょう。
注意:スクレイピングを禁止しているサイトが多々あるので、事前に利用規約など確認しておきましょう。また、連続でアクセスするとサイバー攻撃だと勘違いされかねないので、間隔をあける必要があります。
この記事が気に入ったらサポートをしてみませんか?