はじめに
webサイトの情報を取得し解析したい
そんな考えから、PythonでスクレイピングしてDBに保存
ある程度たまったら解析しようとなった
その手順をまとめたもの(備忘録的な)
動作環境
・Windows7 64bit
・Python 3.6
・MySQL 8.0.12
スクレイピング
手順
1. モジュールのインストール
2. 指定URLからHTML情報の取得
3. HTMLから指定の情報を取得
モジュールのインストール
・URLに接続しHTML情報を取得するためにはrequestsモジュールが必要
・早速インストール
$ py -m pip install requests
*Windows環境ではpy -m
を入力しないといけない
指定URLからHTML情報の取得
requestsモジュールをインストールしたので、実際に取得していきます。
import requests
res = requests.post("URL")
res.encoding = res.apparent_encoding
html = res.text
・equests.post("URL")
でpost通信で接続経路を作成
・res.apparent_encoding
で接続先のエンコードを取得し設定
・res.text
でHTML情報を取得
これでHTML情報の取得ができました
ここから欲しい情報を取得していきます
HTMLから指定の情報を取得
取得したHTMLからタグを指定して表示されている情報を取得します
今回は指定タグの情報を取得する関数を作成しました。
def getTagInfo(html, ntag):
#タグ定義
stag = "<" + ntag + ">"
etag = "</" + ntag + ">"
#取得タグ
tagList = []
#HTML情報を改行コードで区切る
lhtml = html.split("\n")
for l in lhtml:
ifl.find(stag) != -1 and l.find(etag) != -1 and l.count("<") == 2:
l = l.strip(stag)
l = l.strip(etag)
tagList.append(l)
return tagList
引数のhtml
にHTML情報、ntag
に取得するタグ名を設定
HTML情報から、指定されたタグで囲まれ、他にタグがない行を取得し
その行のタグを排除する
この関数でhtml内の欲しい情報を取得できます。
この関数を使い
import requests
res = requests.post("URL")
res.encoding = res.apparent_encoding
html = res.text
h1list = getTagInfo(html, "h1")
plist = getTagInfo(html, "p")
欲しい情報をHTML情報から取得する
DBに登録
手順
1.モジュールのインストール
2.MySQLに接続
モジュールのインストール
・MySQLに接続するのにmysql-connectorモジュールが必要
・早速インストール
$ py -m pip install mysql-connector
*Windows環境ではpy -m
を入力しないといけない
MySQLに接続
import mysql.connector
connect = mysql.connector.connect(host="ホスト名", port="ポート番号", db="DB名", user="ユーザ名", password="パスワード")
ctrl = connect.cursor()
ctrl.execute("SQL")
・mysql.connector.connect
を使用し、MySQLとの接続経路を確保
・connect.cursor()
を使用し、接続したMySQLの操作権を獲得(カーソル的なイメージ?)
・ctrl.execute("SQL")
で、SQLを実行
これで、取得した情報を登録できます。
まとめ
・HTML,MySQLの接続関連に関してはあやふやな部分も多いが、実際に接続することができた
⇒あやふやなので、間違った接続をしているかもしれない
・実際にHTMLから欲しい情報を取得しDBへ登録することができるようになった
⇒しかし、タグ基準なので取得漏れがありそう
今後は、上手く取得できる方法を考えていく
・今回は備忘録的な感じで作成したので、とりあえずこれでいいと思う