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でループ処理をします。
+ ループが終われば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)
第2回 | BeautifulSoup入門 soup.の挙動を確認する |
第3回 | BeautifulSoup入門 スクレイピング実践編 HTML取得まで【python】 |
第4回 | BeautifulSoup入門 スクレイピング実践編 タイトルとリンク取得まで【python】 |
第5回 | BeautifulSoup入門 スクレイピング実践編 複数ページに対応させる【python】 |
第6回 | BeautifulSoup入門 データをpandas データフレームに格納する |
Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。
また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!
こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?
コメント