0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Python講座 第6回目

0
Last updated at Posted at 2026-04-16

目次

・復習問題
・スクレイピングとは
・スクレイピングのライブラリについて

0.復習問題

制限時間は5分!
前回の確認問題と同じ内容になっています!
満点とれるよう頑張ってください!

1.スクレイピングとは

スクレイピングとは、Webページから必要な情報を自動で抜き出す作業のことです!
取得したデータは、ファイルやデータベースに保存されます!

1.1スクレイピングの流れ

image.png
スクレイピングの流れとしましては3つのステップを踏みます!
まず、最初にWebページのHTMLデータの情報の取得です!
Webページは基本HTML、CSSの2つで構成されています。

HTMLとはWebページの内容を作る骨組みのこと
CSSとはHTMLの表示レイアウトを装飾するための言語のこと

2つ目のステップはデータの抽出です。1つ目で得たデータから必要なデータだけを抽出する必要があります。

最後に抽出したデータの保存をします。
この3つのステップを経て、ようやくスクレイピングができたと言えます!

2.スクレイピングのライブラリについて

上記で説明した通り、スクレイピングには3つのステップを踏みますが、各ステップに長けたライブラリが存在します!
それでは今から各ライブラリについて理解していきましょう!

ライブラリ データの取得 データの抽出 データの保存 
+Requests   
Beautiful Soup   
Selenium   
Scrapy  〇 

2.1 Requestsとは

Requestsとは人が使いやすいように作られた、エレガントでシンプルなPythonのHTTPライブラリです。Pythonは標準で同様の機能を持つurllib2を持っていますが、とーーーーーーっても使いにくいといわれています。
それでは簡単な例を見ていきましょう!
まず最初にRequestsライブラリをインストールしましょう!

!pip install requests

インストールできましたか?それでは本命のコードを確認しましょう!

import requests

URL = ''

response = requests.get(URL)
print(response.text)

URL=''の中に試しにヤフーニュースのURLを入れてみましょう!
できましたか??
たくさんのローマ字が出てきていると思いますが、それはすべてヤフーニュースのデータになっています!!

2.2 Beautiful Soup(BS)とは

Beautiful Soup(BS)とは、前章で使ったRequestsで取得したHTMLファイルから望むデータを取得するためのライブラリです。
それではまずBSをインストールしていきましょう!

!pip install beautifulsoup4

それではコードを見ていきましょう!

import requests
from bs4 import BeautifulSoup
import re

#初回のみ
target_url = "https://www.yahoo.co.jp/"
#Requestsを使って、webから取得
r = requests.get(target_url)
#要素を抽出
soup = BeautifulSoup(r.text, 'lxml')

#HTMLファイルとして保存したい場合はファイルオープンして保存
with open('originDataOld.html', mode='w', encoding = 'utf-8') as fw:
    fw.write(soup.prettify())

#soup.find_allを用いてリンク先が「news.yahoo.co.jp/pickup」の項目を全て取得
elems = soup.find_all(href=re.compile("news.yahoo.co.jp/pickup"))
for e in elems:
    print(e.getText())

# 出力結果
石破内閣の閣僚発表 初入閣は13人NEW
政権運営に幕 岸田氏は成果を強調
上海スーパーで切り付け 18人死傷
備蓄米放出なら混乱招いた 農水相NEW
福井沖の遺体は中3か 祖父の思いNEW
各社で内定式 半数企業は募集継続
DeNA、大和など10選手に戦力外
台風18号影響 イベント中止相次ぐNEW

ぱっと見、めちゃくちゃ難しそうですよね!すべてのコードを理解する必要はありません!
全体の流れをつかんでくれたらそれでOKです!
全体の流れ
1.指定されたURLからHTMLを取得する。
2.取得したHTMLを解析して、特定のリンク(news.yahoo.co.jp/pickupを含むリンク)を抽出。
3.抽出されたリンクのテキストを出力し、HTML全体をファイルに保存する。

これにより、Yahoo!トップページにあるニュースのリンクを取得し、それらのテキストを表示したり、HTMLファイルに保存することができます。詳しいコードの解説は下に書いているので参考にしてください!

r = requests.get(target_url)

ここでは、requestsライブラリを使って指定されたURLからHTMLデータを取得しています。

soup = BeautifulSoup(r.text, 'lxml')

BeautifulSoupライブラリを使ってウェブページのHTMLデータを解析し、使いやすい形に変換するためのものです。BeautifulSoupはその材料をきれいに整理して料理(データ解析しやすい形)をするための道具です。

BeautifulSoupは、HTMLやXMLのデータを「スープ」のように解析して、簡単に情報を取り出せるようにするためのPythonライブラリです。

r.textは、requests.get(target_url)で取得したウェブページのHTMLデータ(テキスト形式)を指します。
わかりやすく例えると、r.textはただの材料(未加工のHTMLデータ)で、BeautifulSoupはその材料をきれいに整理して料理(データ解析しやすい形)をするための道具です!

lxmlはHTMLやXMLの解析(パース)を高速に行うためのパーサーの1つです。

with open('originDataOld.html', mode='w', encoding = 'utf-8') as fw:fw.write(soup.prettify())

with openを使って、新しいHTMLファイルoriginDataOld.htmlを作成し、解析されたHTMLデータを保存しています。

soup.prettify()は、HTMLデータを見やすい形式で整形し、これをファイルに書き込んでいます。
utf-8でエンコーディングすることで、文字化けを防いでいます。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?