LoginSignup
0
0

More than 1 year has passed since last update.

スクレイピングの実施方法メモ(1)

Last updated at Posted at 2023-03-05

スクレイピングの方法

スクレイピングは、

HTMLのタグの基本

Webページは、HTML(ハイパーテキスト)で書かれており、HTMLはタグで文字の修飾や機能を与えWebページを表示します。そのためスクレイピングを実施する時は、HTMLのタグを最初に理解することが必要です。

タグ名 説明 備考
<h> 見出しの作成で、h1,h2・・
<a> リンクの作成
<table> 表の作成
<div> グループを作る
<ul> リスト(箇条書き)を作る
<p> 段落を作成する
<form> フォームを作る
<button> ボタンを作成

Webページから要素を取り出す

findメソッドで要素を一つ取り出す。

#ライブラリーのimport
from pathlib import Path
from bs4 import BeautifulSoup

#ファイルのパスの設定
hfile = Path('flowerpark.html')
#ファイルの読み込み。テキストで読みこむ。
htext = hfile.read_text(encoding='utf-8')

#BeautifulSoupオブジェクトの作成
soup = BeautifulSoup(htext, 'html.parser')

#soupオブジェクトの中からh2タグの内容を変数h2に入れる。h2はタグ全体。textでその中のテキスト。
h2 = soup.find('h2')
print(h2)
print(h2.text)
#soupオブジェクトの中からh2タグの内容を変数h3に入れる。
h3 = soup.find('h3')
print(h3)
print(h3.text)

#<h2>皆様へのお願い</h2>
#皆様へのお願い
#<h3>開園時間</h3>
#開園時間

aタグのhref属性の取り出し
href属性は、「hypertext reference」でハイパーテキストの参照。

a_tag = soup.find('a')
print(a_tag)

#<a href="gallery/flower1.html">
#<img alt="" height="120" src="img/flower1.jpg" width=" 200"/>
#</a>

print(a_tag['href'])

#gallery/flower1.html

id属性、class属性を指定して要素を取り出せる。

news = soup.find(class_='block-news')
print(news)

#<div class="block-news">
#<h2>皆様へのお願い</h2>
#<ul>
#<li>駐車場の混雑緩和のため、公共交通機関をご利用ください</li>
#</ul>
#</div>

span = soup.find('span', class_='info-access')
print(span)

#<span class="info-access">○○線「△△」駅下車 徒歩5分</span>

find_allメソッドで要素を全部取り出す。
findメソッドとfind_allの違い

項目 find find_all
取り出す要素 最初の1件 要素全て
戻り値 Tagオブジェクト ResultSetオブジェクト
要素がない場合の戻り値 None 空のResultSetオブジェクト

タグは複数設定することで、複数取り出せる。
引数limitをつけることで、個数を設定できる。

for h2 in soup.find_all('h2'):
    print(h2, ':', h2.text)

#<h2>皆様へのお願い</h2> : 皆様へのお願い
#<h2>新着情報</h2> : 新着情報
#<h2>フラワーギャラリー</h2> : フラワーギャラリー
#<h2>公園の利用案内</h2> : 公園の利用案内

for h_tag in soup.find_all(['h1', 'h2', 'h3']):
    print(h_tag)

#<h1>フラワー公園</h1>
#<h2>皆様へのお願い</h2>
#<h2>新着情報</h2>
#<h2>フラワーギャラリー</h2>
#<h2>公園の利用案内</h2>
#<h3>開園時間</h3>
#<h3>交通案内</h3>

for h_tag in soup.find_all(['h1', 'h2', 'h3'],limit=2):
    print(h_tag)

#<h1>フラワー公園</h1>
#<h2>皆様へのお願い</h2>


引数class属性を設定することで、クラス中のタグを取り出せる。

for span in soup.find_all('span',
                          class_='info-access'):
    print(span)

#<span class="info-access">○○線「△△」駅下車 徒歩5分</span>
#<span class="info-access">○○バス「△△」下車 徒歩2分</span>
0
0
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
0