[Python] 317 lxmlがない場合のpandas.read_html代替スクリプト 改良版

前回の続きです。

htmlファイル内のtableを2次元リストを経て直接データフレームに変換する方法に書き直しました。CSVファイルを作成しない分、スマートかと思います。

# 代替スクリプト改良版

# 文字コードをUTF-8に変換してソース取り込み
html = driver.page_source.encode('utf-8')

# BeautifulSoupでデータ抽出
soup = BeautifulSoup(html, "html.parser")

# soupから3番目のtableを抽出
table = soup.find_all("table",attrs={"cellspacing" : "1"})[2]
rows = table.findAll("tr")

list_rows = []
for row in rows:
    list_row = []
    for cell in row.findAll(['td', 'th']):
        text = cell.get_text()
        text2 = text.replace('"','').replace("\n","").replace(" ","").replace(" ","")
        list_row.append(text2)
    list_rows.append(list_row)

# 2次元リストをヘッダとデータに分割
header = list_rows[0]
data = list_rows[1:]

# データフレームに変換
df = pd.DataFrame(data,columns = header)