ここでは、「ITmedia」のニュースタイトルをスクレイピングする方法について解説しています。
この記事の対象
行ったこと
「ITmedia」のニュースタイトルをスクレイピングして上から5つ抽出して出力するプログラムを作成しました。
今回抽出したい情報は「h3」情報になります。ちなみに、「h3」をどのように調べたかというと、右クリックの「検証」を基に調べられます。
流れ
プログラムの大まかな流れです。
- requestsでhtml取得
- BeautifulSoupにhtml情報を渡す
- BeautifulSoupで解析(h3の抽出)
プログラム
from bs4 import BeautifulSoup
import requests
#1---URL指定
url = "https://www.itmedia.co.jp/news/"
#2---headers指定
headers = {"User-Agent": "*****"}
soup = BeautifulSoup(requests.get(url, headers = headers).content,'html.parser')
#3---h3の書籍タイトルの抽出
all_h3 = soup.select('h3')
for i in range(5):#5つ抽出
cell = all_h3[i].get_text()
print(cell)
#4---終了の合図
print('完了')
上記がプログラムになります。
それでは解説していきます。
#1---URL指定
url = "https://www.itmedia.co.jp/news/"
1の部分ではURLを指定しています。
#2---headers指定
headers = {"User-Agent": "*****"}
soup = BeautifulSoup(requests.get(url, headers = headers).content,'html.parser')
2の部分では、リクエストとレスポンスの送受信時に使用するHTTPヘッダーを指定しています。各々の環境を「確認くん」で確認して、「現在のブラウザ」を「*****」に転記してください。
次にURLとheaderをBeautifulSoupに投げています。
#3---h3の書籍タイトルの抽出
all_h3 = soup.select('h3')
for i in range(5):#5つ抽出
cell = all_h3[i].get_text()
print(cell)
3の部分では、ニュースのタイトルである「h3」を「select」で指定しています。次に上、for構文で5つ抽出してprintさせています。
最後に完了の文字を出力しています。
soup.select()とは
soup.select()
BeautifulSoupで文字を抽出する際に良く利用されるのが「select」メソッドになります。
「select」関数はマッチするすべての要素をリストで返してくれます。
例えば、以下だったら
要素.select('h1').string
要素から全ての「h1」を取得します。それから「string(文字)」を取得しています。
一つだけの要素抽出→「soup.select_one」
要素.select_one()
要素のなから一つだけの要素を抽出したいときに使用するのが、「soup.select_one」です。
例えば、以下だったら
要素.select_one('h1').string
要素のなから探索して最初にマッチした「h1」だけを文字として取得するというものになります。
「select」と「find」
「select」と同じような機能として「find」が存在します。findは「要素名」「属性」を引数に指定できる特徴があります。好みによりますが、findもあるということだけ記しておきます。
select | find | |
全ての要素を抽出 | soup.select() | soup.find_all() |
一つだけ要素を抽出 | soup.select_one() | soup.find() |
結果
スクレイピングした結果です。
ニュースをスクレイピングして、これらの情報を加工してLineやメール送信できれば独自のRSSを作成したりできます。スクレイピングができるようになると様々な可能性が広がります。
【おすすめの書籍】
・Pythonクローリング&スクレイピング[増補改訂版] -データ収集・解析のための実践開発ガイド
スクレイピングを実践形式で学べるのでおすすめです。スクレイピングした後の加工、解析など具体的な使用方法が明示されているので、初学者におすすめの書籍です。
・あなたの仕事が一瞬で片付くPythonによる自動化仕事術
「キノコード」で有名なエンジニアが書かれた初学者向けの書籍です。YouTubeでも学習できるので、スクレイピングだけではなく、自動化などに挑戦したい方におすすめの書籍です。
・PythonでExcel、メール、Webを自動化する本
スクレイピングした情報をExcelに保存したい、情報を送信したい。などの具体的に役立つ情報が紹介されています。mail操作が紹介されているので、スクレイピングだけではなく、広く学ぶことができる書籍です。