2019-02-28に投稿

BeautifulSoup入門 スクレイピング実践編 複数ページに対応させる【python】

スクレイピングをしたい

Webサイトから情報をまとめてCSVでごにょごにょしたいなどにスクレイピングは便利です。
今回は、Pythonのスクレイピングによく使われるBeautifulSoupを使って勉強していきます。
BeautifulSoupには便利な機能がたくさんあります。
今回もcrieitさんからデータを抜いていきます。(制作者のdalaさんには了解済み)

今回の目標

今回の目標はcrieitの全タイトルと記事URLの取得とします。

ライブラリの導入

何はともあれライブラリを導入します。

from bs4 import BeautifulSoup
import requests

記事一覧ページの確認

crieitの記事一覧は、https://crieit.net/posts?page=1 という記載になっています。
つまり、=1の分割すれば良さそうです。

base_url = "https://crieit.net/posts?page="
num = 1

whileでループ処理

次にwhileでループ処理をします。
+ ループが終わればnumに1を足す。
+ 所得したtextの長さが0ならループを抜ける

これで動きそうです。

while num <= 100:
 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

str(num)でnumを文字列に変換しています。
len(titles)は、titlesの長さを確認します。

完成したコード

from bs4 import BeautifulSoup
import requests

base_url = "https://crieit.net/posts?page="
num = 1
while num <= 100:
 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)

動くサンプル

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は個人で開発中です。 興味がある方は是非記事の投稿をお願いします! どんな軽い内容でも嬉しいです。
なぜCrieitを作ろうと思ったか

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

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

ボードとは?

関連記事

コメント