開発環境
- macOS Sierra - Apple (OS)
- Emacs (Text Editor)
- Python 3.5 (プログラミング言語)
6年半前にXMLパーサを作った時は、泥臭い手書き再帰下降パーサの知識しかなかった。 https://t.co/Unx6E5bCMF
— 七誌 (@7shi) 2016年12月27日
それからコルーチンとパーサコンビネータの知識が増えたので、何か適当な素材で書き心地を確かめてみたかったのが、今回JSONパーサーを作った主な動機。
HTMLをパースを、 Python の BeautifulSoup を利用したら、どんな感じになるか気になったので。
コード(Emacs)
#!/usr/bin/env python3 # -*- coding: utf-8 -*- from bs4 import BeautifulSoup from urllib import request import re html = request.urlopen('http://www.yahoo.co.jp') bs_obj = BeautifulSoup(html, 'lxml') topics = bs_obj.find_all('a', href=re.compile( r'^http://news.yahoo.co.jp/pickup/.*$')) for topic in topics: print(topic.text)
入出力結果(Terminal)
$ ./get_yahoo_topics.py 東芝 1千億円規模損失計上へ 公安調査庁 5年連続で増員へ 賭けマージャン 起訴可能性は 中学生自殺 いじめアンケ廃棄 コロンビア墜落 燃料切れ原因 飲酒の中学生 消火器を噴射 スマスマ 協議の末タブー解禁 瞬間最高は中居の涙 27.4% $
クロージャーで簡略化した方と比べた時、「Yahooのトップページからトピックスを抜き出す」くらいの処理だと、コードの長さ、分かりやすさ等、そんなに違いはないかも。
0 コメント:
コメントを投稿