2019-03-02に投稿

BeautifulSoup入門 データをpandas データフレームに格納する


title: BeautifulSoup入門 データをpandas データフレームに格納する
date: '2019-03-02'
update:
type: post
icon: python-logo.png
categoryName: Python

categorySlug: python

データをいろいろ扱いたい

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

動くサンプル

Python3

Originally published at www.corylog.com
ツイッターでシェア
みんなに共有、忘れないようにメモ

view_list [連載] BS4でスクレイピング
第2回 BeautifulSoup入門 soup.の挙動を確認する
第3回 BeautifulSoup入門 スクレイピング実践編 HTML取得まで【python】
第4回 BeautifulSoup入門 スクレイピング実践編 タイトルとリンク取得まで【python】
第5回 BeautifulSoup入門 スクレイピング実践編 複数ページに対応させる【python】
第6回 BeautifulSoup入門 データをpandas データフレームに格納する

aocory

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント