う え き ぷ に き あ く ん 笑 Advent Calendar 2021 15日目です
環境
macOS Catalina 10.15.7
Python 3.9.7
この記事について
本記事では、スクレイピングを今すぐしたいけどよくわからない!とりあえずコピペで動くものを使いたい!!!
みたいな方に向けたものです。
また、本記事での"スクレイピング"は"Webスクレイピング"を表します。
スクレイピングについて
そもそもスクレイピングとは、特定の情報を取得することを目的としてWebページを自動的に巡回することです。
本記事では、Python3を用いて実装していきます。
実装
本記事内では、モジュールとしてPython標準のurllib.requestモジュールを使用します。
以下、ページ内容の取得の実装部分になります。
from urllib import request
URL = "https://www.google.com/"
res = request.urlopen(URL)
content = res.read()
res.close()
html = content.decode()
1行目でurllib.requestを読み込みます。
4, 5行目で指定したURLのページのHTMLをバイト列として取得します。
6行目で通信を終了し、7行目でバイト列として取得したHTMLを文字列にデコードしています。
以下、本記事内では、
def urlopen(URL):
from urllib import request
res = request.urlopen(URL)
content = res.read()
res.close()
html = content.decode()
return html
として実装されているものとしています。
次に、取得したHTMLから特定のデータを取得する部分の実装です。
URL = "https://www.google.com/"
html = urlopen(URL)
def element_get(HTML, TAG):
HTML += ">" # データの取得がしやすいよう、末尾に>を追加
tag_start = "<"+TAG+">"
tag_end = "</"+TAG+">"
ret = []
splited_html = html.split(tag_end)
for ind,element in enumerate(splited_html):
if ind+1 == len(splited_html):
continue
ret.append(element.split(tag_start)[-1])
return ret
流れとしては、HTMLタグを引数から作成し、
<tag>
</tag>
その後、タグの終了で分割を行い、その結果に対してタグの始まりで分割をすることで要素の取得を行います。
唐突な終わり
ここまで書いたのですが、特にぼくはスクレイピングでしたいことがないため、これ以上は書けません。有意義なプログラムを作成することはとても難しいですね...
最終的なプログラムは以下の通りになります。ぜひ有効活用してみてくださいね!(お願いしますほんとに)
def urlopen(URL):
from urllib import request
res = request.urlopen(URL)
content = res.read()
res.close()
html = content.decode()
return html
def element_get(HTML, ELEMENT):
HTML += ">"
ele_start = "<"+ELEMENT+">"
ele_end = "</"+ELEMENT+">"
ret = []
splited_html = html.split(ele_end)
for ind,ele in enumerate(splited_html):
if ind+1 == len(splited_html):
continue
ret.append(ele.split(ele_start)[-1])
return ret
明日の記事はうえきさんらしいので、ぜひぜひ〜