BeautifulSoup入門 データをpandas データフレームに格納する
03 02, 2019
データをいろいろ扱いたい
google Colaboratoryは、環境構築不要で色々できるのが魅力です。 今回は前回回収したCrieitのデータをCSVにしたいと思います。
元のコード
from bs4 import BeautifulSoup
import requests
base_url = "https://crieit.net/posts?page="
num = 1
while num <= 2:
url=base_url+ str(num)
r = requests.get(url)
soup = BeautifulSoup(r.text)
titles =soup.select("h5 a")
if len(titles) == 0:
print("これ以上記事はありません")
break
num += 1
for title in titles:
print(title.text)
pandasをインポート
まずはPandrasをインポートします。
import pandas as pd
pandasデータフレームを作る
データを格納するためのハコを作ります。pandasではこのことをデータフレーム=dfといいます。 titleを今回はCSVにします。 columnsは、表の横列を示します。あとで出てきますが縦列はrowで表現します。
columns = ["title"]
df = pd.DataFrame(columns=columns)
for文を書き換え
for文でtitleをデータフレームに格納します。 そのときの処理は、PandasのSeriesを用います。 そして、Pandasのデータフレームの末尾にappendを用いて追加します。
for title in titles:
se= pd.Series(title.text, columns)
df = df.append(se, ignore_index=True)
結果を表示させる
結果を表示させます。
df
修正したコード
from bs4 import BeautifulSoup
import requests
import pandas as pd
columns = ['title']
df = pd.DataFrame(columns=columns)
base_url = "https://crieit.net/posts?page="
num = 1
while num <= 1:
url=base_url+ str(num)
r = requests.get(url)
soup = BeautifulSoup(r.text)
titles =soup.select("h5 a")
if len(titles) == 0:
print("これ以上記事はありません")
break
num += 1
for title in titles:
se= pd.Series(title.text, columns)
df = df.append(se, ignore_index=True)
df