Python - JSONの解析(百人一首を読む)

JSONの解析を行っていきます。

JSONの解析

以下のページをJSON解析の対象とします。
http://api.aoikujira.com/hyakunin/get.php?fmt=json

百人一首APIを使って、JSON形式で百人一首をダウンロードしランダムに歌を3首表示します。

[コード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import urllib.request as req
import os.path, random
import json

# JSONをダウンロード
url = 'http://api.aoikujira.com/hyakunin/get.php?fmt=json'
savename = 'hyakunin.json'
if not os.path.exists(savename):
req.urlretrieve(url, savename)

# JSONファイルを解析
data = json.load(open(savename, 'r', encoding='utf-8'))

# ランダムに一首表示
for i in range(3):
r = random.choice(data)
print(r['kami'], r['simo'],)

実行結果は下記の通りです。

[実行結果]

恋すてふ 我が名はまだき 立ちにけり 人しれずこそ 思ひそめしか
田子の浦に うちいでてみれば 白妙の 富士の高嶺に 雪は降りつつ
あはれとも いふべき人は 思ほえで 身のいたづらに なりぬべきかな

Python - XMLの解析(地域防災拠点データを読む)

BeautifulSoupを使ってXMLの解析を行っていきます。

XMLの解析

以下のページをXML解析の対象とします。
http://archive.city.yokohama.lg.jp/somu/org/kikikanri/data/shelter.xml

shelter.xml(一部略)

このページで公開されているXML形式の地域防災拠点データを読み込んで、区ごとに防災拠点の名前一覧を出力します。

[コード]

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
from bs4 import BeautifulSoup
import urllib.request as req
import os.path

# XMLをダウンロード
url = 'http://archive.city.yokohama.lg.jp/somu/org/kikikanri/data/shelter.xml'
savename = 'shelter.xml'
if not os.path.exists(savename):
req.urlretrieve(url, savename)

# BeautifulSoupでXMLを解析
xml = open(savename, 'r', encoding='utf-8').read()
soup = BeautifulSoup(xml, 'html.parser')

# データを各区ごとに確
info = {}
for i in soup.find_all('shelter'):
name = i.find('name').string
ward = i.find('ward').string
addr = i.find('address').string
note = i.find('notes').string
if not (ward in info):
info[ward] = []
info[ward].append(name)

# 区ごとに防災拠点を表示
for ward in info.keys():
print('+', ward)
for name in info[ward]:
print('| - ', name)

実行結果は下記の通りです。

[実行結果]

+ 鶴見区
| -  生麦小学校
| -  豊岡小学校
| -  鶴見小学校
| -  潮田小学校
| -  下野谷小学校
| -  市場小学校
| -  平安小学校
| -  末吉小学校
| -  上末吉小学校
| -  下末吉小学校
| -  旭小学校
| -  東台小学校
| -  岸谷小学校
| -  矢向小学校
| -  入船小学校
| -  寺尾小学校
| -  汐入小学校
| -  馬場小学校
| -  駒岡小学校
| -  獅子ケ谷小学校
| -  上寺尾小学校
| -  新鶴見小学校
| -  市場中学校
| -  矢向中学校
| -  鶴見中学校
| -  末吉中学校
| -  寺尾中学校
| -  生麦中学校
| -  潮田中学校
| -  寛政中学校
| -  上の宮中学校
+ 神奈川区
| -  三ツ沢小学校
| -  青木小学校
| -  二谷小学校
| -  幸ケ谷小学校
| -  浦島小学校
| -  子安小学校
(以下略)

Python BeautifulSoup - 為替データをスクレイピングする

Yahoo!ファイナンスの為替情報を取得してみます。

スクレイピングを行うためにBeautifulSoupというライブラリを使用します。

BeautifulSoupのインストール

まずBeautifulSoupをインストールします。

1
pip install beautifulsoup4

スクレイピング

以下のページをスクレイピング対象とします。
http://stocks.finance.yahoo.co.jp/stocks/detail/?code=usdjpy

為替レートの数字が表示されている部分をソースで見ると次のようになっています。

1
<td class="stoksPrice">108.460000</td>

CSSセレクタで「.stoksPrice」の要素を取得します。

[コード]

1
2
3
4
5
6
7
8
9
10
from bs4 import BeautifulSoup
import urllib.request as req

url = 'http://stocks.finance.yahoo.co.jp/stocks/detail/?code=usdjpy'
res = req.urlopen(url)

soup = BeautifulSoup(res, 'html.parser')

price = soup.select_one('.stoksPrice').string
print('usdjpy=', price)

実行結果は下記の通りです。

[実行結果]

usdjpy= 108.460000

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×