BeautifulSoup入門 スクレイピング実践編 Pagenateに対応【python】

02 28, 2019

スクレイピングをしたい

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


コリ

コリといいます。奈良県でサラリーマンをしています。GatsbyJSでサイトを作るのが趣味です。