プログラミングしていて、
とあるファイルや外部サイトのHTMLだとかを部っこ抜きたい時はよくあると思います。
初めてpythonでスクレイピングをさせてみたのでメモメモ。
使うモジュール
・urllib3
もしインストールされていない場合は、
pip install urllib3
でさくっとインストールするがよろし。
※僕はサーバをEC2にて運用しているのですが初めから入っていたようです。
なお今回はWebページにアクセスして文字列を検索して抜出すプログラムを書いています。
で、
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys,os import urllib3 import re http = urllib3.PoolManager() html = http.request('GET', '取得したいページのURL').data saki = re.findall('検索したい文字列', html) for m in saki: print m |
こんな感じですね。
すごく適当な感じですが、
例えばツイッターのハッシュタグクラウドのページにアクセスして、
今話題のタグの部分を抜出したい場合は、
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys,os import urllib3 import re http = urllib3.PoolManager() html = http.request('GET', 'http://hashtagcloud.net/').data saki = re.findall('<h3 class="hashtag-name">(.*)</h3>', html) for m in saki: print m |
となるかと思います。
ただ、この場合だと、
<a href="http://hashtagcloud.net/info/buddycom">#buddycom</a><span class="category">[テレビ]</span>
<a href="http://hashtagcloud.net/info/モーニング娘">#モーニング娘</a><span class="category">[エンタメ]</span>
<a href="http://hashtagcloud.net/info/ゲーム">#ゲーム</a><span class="category">[ゲーム]</span>
といった感じで余計な文字だとかがあるので、
もう少しちゃんとした正規表現にするか、
抜出したあとに加工するかする必要はあります。