diadia

興味があることをやってみる。自分のメモを残しておきます。

BeautifulSoupの使い方

BeautifulSoupのメモ

windowsで使う場合には、anacondaで使うと良い。必要なライブラリはbeautifulsoup4とrequestsまたはurllib.requestである。

インストール

https://www.crummy.com/software/BeautifulSoup/bs4/doc/#installing-beautiful-soup

pip install beautifulsoup4
pip install requests

使い方のイメージ

  1. スクレイピングを実行するページのURLを規定する。
  2. URLをもとにページを開く
  3. 開いたページをBeautifulSoupを使いスクレイプできる状態のhtml情報に変換する
  4. html情報からほしいタグや属性を定め、情報を取得する

サンプルコード

from bs4 import BeautifulSoup
import requests
from time import sleep

URL = "https://hogehoge"

response = requests.get(URL)
soup = BeautifulSoup(response.text, "html.parser")
date = soup.find("h3")
content = soup.find(class_="hoge").text

要素の取得方法

基本的にBeautifulSoup#find()メソッドまたはBeautifulSoup.find_all()メソッドを使って要素を取得していく。 そしてurlやテキストといった種類に応じた取得手段を使う。 find()は一要素を取得する。一方find_all()はマッチする要素をリスト型に似たデータ型として情報が返される。 find_allを使った後は基本的にfor構文を使い一要素にバラしたり、リスト型データ[-1]として一要素として抜き出す。 一要素に抜き出された情報はタグに囲まれたテキスト情報をスクレイプしたい場合にはBeautifulSoup.textでテキスト情報の取得ができるし, タグ内の属性値を取得したい場合にはBeautifulSoup#get()メソッドを実行すれば良い。 BeautifulSoup.get("href")でurlを、BeautifulSoup.get("src")で画像urlを取得する。