スクレイピングをやってみた②。ページ遷移しながら3ページ分スクレイピング。

前回の続編です。

スクレイピングをやってみた。pandas DataFrameオブジェクトのcolumnsが1行の場合の書き方は?
この本↓で勉強したことを使って、実際にWebスクレイピングをやってみました。 まず、どんなことをやったか結果をお見せします。 この横浜イベント情報のWebサイトから↓ 「赤レンガ倉庫」「山下公園」の...

前回はWebサイト1ページからスクレイピングをしましたが、今回は1~3ページからスクレイピングをしてみたいと思います。

どういうものかと説明すると、こちらの横浜イベントサイトの↓

横浜のイベントまとめ | はまこれ横浜
横浜で開催予定のイベントを無料イベント、有料イベント、月別にてご紹介。イベントの最新ニュース、ブログ記事ではイベントの感想やイベントの雰囲気なども掲載しています。横浜みなとみらいや横浜駅、馬車道、横浜中華街、元町など横浜ベイエリアを中心に掲載。

先頭3ページ分の記事タイトルの中で、「赤レンガ倉庫」「山下公園」という文字を含むタイトルだけを抜き出しエクセルファイル(CSV)に保存するというものです↓

スポンサーリンク

Webサイト3ページ分スクレイピングしてみた。

前回の記事のコードをもとに、3ページ分記事タイトルをスクレイピングするコードを考えました。

ちょっと難しかったですが、手順としてはこうです。

  1. 最初に空のリストを作る(あとでpandasのDataFrameオブジェクトを作るのに必要)。
  2. for文で3ページ分回す。
  3. for文の中でさらにfor文を回し、取得したタイトル一つ一つを空のリストに入れていく。
  4. 取得した複数のタイトルが入ったリストをDataFrameオブジェクトにして、to_csvメソッドでエクセルファイルに保存する。

コードはこうです↓


import re
import requests
from bs4 import BeautifulSoup
import time
from urllib.parse import urljoin
import pandas as pd

url='https://hamakore.yokohama/event/'
# 空のリストを作る(DataFrameオブジェクトにするのに必要)
title_list=[]
# 1~3ページ分のタイトルを取得
for i in range(1,4):
    # 1ページ目はそのままのURL
    if i==1:
        page_url=url
    else:
    # 2ページ以降はURLをつなげる
        page_url=urljoin(url,f'page/{i}')
    # 1~3ページのそれぞれのURLにアクセス
    res=requests.get(page_url)
    soup=BeautifulSoup(res.text,'html.parser')
    # 「赤レンガ倉庫」「山下公園」を含むタイトルをしゅとくする
    pattern=re.compile('赤レンガ倉庫|山下公園')
    titles=soup.find_all('div',class_='articletitle',string=pattern)
    for title in titles:
        # 空のリストにタイトルを入れていく
        title_list.append(title.text)
    time.sleep(1)
print(title_list)
# csvで保存するためにDataFrameオブジェクトにする
df=pd.DataFrame(title_list,columns=['タイトル'])
# csvで保存する
df.to_csv('minatomirai-3pages.csv',index=False,encoding='utf-8-sig')

実行すると、できました!
エクセルファイルが作成され↓

ファイルを開くと↓

うまくいってます。

どうでしょうか?「Webサイトの複数ページから、ある文字を含む要素を抜き出しエクセルファイルにまとめる」というのは結構使えそうですよね。

ぜひ参考にしてみてください。

はい、これでこの本で勉強したことはだいぶ身に付いたかなと思います↓

この本には他にも、データを整理・加工したり、集計したり、グラフ化したり、様々なことが載っていますが、アウトプットするのはこのへんで終わりにしたいと思います。

「Python 自動処理の教科書」を買った。

そして、「Python 自動処理の教科書」を買いました。

この本はPython自動化においてはかなり有名で、知っている人も多いのではないでしょうか。

「Pythonでエクセルやメール、ツイッター、LINEを自動化したい」という方にはオススメです。

ただかなり分厚いです。

この本に書いてあることを全てパソコンでやるのはそうとうな時間がかかるので、この本はざっと流し読みすればいいと思ってます。

どんなことが出来るのかがわかっていれば、必要になった時にこの本を見ながらできる。

次回はこの本の感想になるかと思います。

タイトルとURLをコピーしました