BeautifulSoupを使ったWebスクレイピング(過去記事)

目次

今回やりたいこと

Qiitaの記事一覧をWebスクレイピングで取得する

プラグラムの流れ

1.URLを指定してレスポンス取得

  • BeautifulSoupというライブラリを利用する
  • 標準入力から検索キーワードを入力する
from bs4 import BeautifulSoup
import requests

# 検索キーワード
keyword = input('検索キーワード:')

# ベースのURL
base_url = 'https://qiita.com/search?q='

# https://qiita.com/search?q=キーワード という形になる
url = base_url + keyword

2.htmlをBeautifulSoupで解析

  • Qiitaの記事タイトルをタグのclass名で取得
  • elemsにはタイトルがリストで格納されている
html = requests.get(url)
soup = BeautifulSoup(html.content, "html.parser")
elems = soup.select(".searchResult_itemTitle")

3.結果を標準出力する

  • for文で標準出力
for elem in elems:
    print(elem.text)

最終的に

  • 上記のコードでは1ページ目のみしか出力されない
  • 複数ページから取得できるように若干のコード追加を行った
from bs4 import BeautifulSoup
import requests

# 検索キーワード
keyword = input('検索キーワード:')

# ベースのURL
base_url = 'https://qiita.com/search?q='

# https://qiita.com/search?q=キーワード という形になる
url = base_url + keyword

# 取得するページ数
page = 3

# ページごとに処理を行う
for page in range(page):
    # タイトルの取得
    html = requests.get(url + '&page=' + str(page + 1))
    soup = BeautifulSoup(html.content, "html.parser")
    elems = soup.select(".searchResult_itemTitle")

    if not elems and page + 1 >= 2:
        # 2ページ目以降でリストが空であれば処理終了
        break
    elif not elems:
        # 1ページ目からリストが空であれば'検索結果なし'と出力し処理終了
        print('検索結果なし')
        break

    print('\n【ページ' + str(page + 1) + '】')
    for elem in elems:
        print(elem.text)

結果

検索キーワード:スクレイピング

【ページ1】
[スクレイピング] Pythonスクレイピング
スクレイピング2 スクレイピングのやり方
スクレイピング1 Pythonによるスクレイピング
スクレイピングとは?Webスクレイピングを簡単に解説
スクレイピング
phpQueryでスクレイピング
seleniumでスクレイピング
スクレイピング事始め
Pythonでスクレイピング
Pythonでスクレイピング

【ページ2】
スクレイピングの活用事例をご紹介
Jsoupでスクレイピング
スクレイピングいろいろ
Twitter のスクレイピングについて
スクレイピング ❏Rails❏
【Railsでスクレイピング】Mechanize記事まとめ
なぜWebスクレイピングを学ぶのか?
puppeteerでスクレイピング
【個人開発】お笑いガシャ制作 | Ruby on Rails + Mechanize (スクレイピング )
スクレイピング事例4選 | スクレイピングの活用事例をご紹介

【ページ3】
Pythonのスクレイピング
スクレイピング事例4選 | スクレイピングの活用事例をご紹介
気象情報のスクレイピング【入門編】
スクレイピングの基礎
Pythonでスクレイピング
Webスクレイピングに関するよくある質問
Webスクレイピングに関する10のよくある誤解
【rails】スクレイピングの実装方法
PHPでスクレイピング
Webスクレイピング

プロセスは終了コード 0 で完了しました
目次