Webスクレイピングの学習が進みました。今回はテキストのスクレイピングまで学習しました。
テキストデータの取得
ページからテキストを抜き出す処理を行います。このページから講師情報を取得します。
#ユーザーネームの要素を取得
elem_username = browser.find_element_by_id("name")
elem_username.text
#所属企業
elem_company = browser.find_element_by_id("company")
elem_company.text
#生年月日
elem_birthday = browser.find_element_by_id("birthday")
elem_birthday.text
#出身地
elem_come_from = browser.find_element_by_id("come_from")
elem_come_from.text
#hobby
elem_hobby = browser.find_element_by_id("hobby")
hobby = elem_hobby.text
#replaceを使って改行コードをコンマに変える
hobby02 = hobby.replace("\n",",")
hobby02
テキストデータの一括取得
テーブルから一括でテキストデータを取得する方法を考えます。
th
タグに必要なテキストがが含まれているので、タグ名を使って複数の要素を取得します。
#thの要素を取得 - 一番最初の要素のみが取得される
elem_thtext = browser.find_element_by_tag_name("th")
elem_thtext.text
#複数要素を一括取得 - thタグとなっている要素全て取得する(list型で表示)
elem_thtext = browser.find_elements_by_tag_name("th")
elem_thtext
#取得した要素
for i in range(0, len(elem_thtext)):
print(elem_thtext[i].text)
#取得した要素をリストに
keys = []
elem_thtext = browser.find_elements_by_tag_name("th")
for elem_th in elem_thtext:
text = elem_th.text
keys.append(text)
print(keys)
テーブルのキー側が取得できたので、次はバリュー側を取得します。
#tdの方を取得する
elem_tdtext= browser.find_elements_by_tag_name("td")
elem_tdtext
#取得した要素
for i in range(0, len(elem_tdtext)):
print(elem_tdtext[i].text)
#取得した要素をリストに
values = []
elem_tdtext = browser.find_elements_by_tag_name("td")
for elem_td in elem_tdtext:
text = elem_td.text
values.append(text)
print(values)
CSVにして出力
スクレイピングしたテキストをCSVファイルにして出力します。
データフレームの作成にはPandasを用います。Pandasは2次元データの作成とその入力・出力に向いているライブラリーです。
import pandas as pd
df=pd.DataFrame()
df["項目"] = keys
df["値"] = values
df
#csvに出力(インデックスは無し)
df.to_csv("講師情報.csv", index = false)
次回は画像データのスクレイピングについて学習します。