狠狠撸

狠狠撸Share a Scribd company logo
XMLスクレイピング
with python
自己紹介
? 岸本 拓也
? 2003年~ 株式会社インサイトテクノロジー コンサルティング事業部
? 最下流エンジニアとして従事(本番稼働前後のRDBMSチューニングが主業務)
? TOPSE9期生
? 正規化されたDBを見ると心が穏やかになる
岸本的にはデータはRDBMSに入っていると安心
? ビッグデータの多くは非構造化データ
? そのままDBに入れる?
? ドキュメントDBとかあるけど。。。
? やっぱりSQLが使えるといい
XML,HTMLファイルのスクレイピング
? lxml, beatifulsoupなどいろいろ
? 濒虫尘濒の方が速いらしい
Q1: lxmlの気に入っているところは?
Ans: ネストしているXML(HTML)をリストに変換でき
るXML構造
<TsunamiEvacuationFacility>
<Type>民間施設</Type>
<Ward>鶴見区</Ward>
<Name>キリンビール株式会社横浜工場 総合棟</Name>
<Address>生麦1-17-1</Address>
<AvailableTime>24時間365日</AvailableTime>
</TsunamiEvacuationFacility>
<TsunamiEvacuationFacility>
<Type>民間施設</Type>
<Ward>鶴見区</Ward>
<Name>株式会社松尾工務店</Name>
<Address>鶴見中央四丁目38番35号</Address>
<AvailableTime>平日8:30~17:30</AvailableTime>
</TsunamiEvacuationFacility>
.....
リスト構造
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Type', u'民間施設']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Ward', u'鶴見区']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Name', u'キリンビール株
式会社横浜工場 総合棟']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Address', u'生麦1-17-1']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'AvailableTime', u'24時間
365日']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Type', u'民間施設']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Ward', u'鶴見区']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Name', u'株式会社松尾工
務店']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'Address', u'鶴見中央四丁
目38番35号']
['', 'TsunamiEvacuationFacilityList', 'TsunamiEvacuationFacility[1]', 'AvailableTime', u'平日8:30
~17:30']
…..
ソース
#!/usr/bin/env python
from lxml import etree
mxml =
etree.parse("http://www.city.yokohama.lg.jp/somu/org/kikikanri/data/tunami.xml")
.getroot() #get xml -> mxml
mtree = etree.ElementTree(mxml) #get elementtree type -> mtree
for m in mxml.iter():
mlist = mtree.getpath(m).split("/") #get path -> mlist
mlist.append(m.text) #append value
print mlist
Q2: 使っているところは?
Ans: XMLファイルの比較に使っています
7
Parser
Generator
(ANTLR4)
XML
ファイル
Parser
検査対象SQL
クエリファ
イル
SQLクエ
リ比較
自己結合
SQLモデル
XML
ファイル
ユーザ
自己結合
SQLパター
ン
自己結合
SQLパター
ン
アンチ
SQLパターン
XML→
リスト変換
まとめ
XML(HTML)のスクレイピングにはlxmlがいいらしい
1.速い
2.XML構造をフルパス出力できる
おまけ
横浜市津波避難施設一覧(全174箇所)
http://jp.batchgeo.com/map/b2e872a43ef44e80593a0f7c
187f4a71

More Related Content

Parsing xml with lxml