from HTMLParser import HTMLParser
import urllib2
from urlparse import urlparse
class ExtractTextLinkParser(HTMLParser):
def __init__(self):
HTMLParser.__init__(self)
self.links = []
self.url = ""
self.text = ""
def handle_starttag(self, tag, attrs):
if tag == "a":
attrs = dict(attrs)
if "href" in attrs:
self.url = attrs["href"]
def handle_endtag(self, tag):
if tag == "a":
if self.text:
self.links.append((self.url, self.text))
self.url = self.text = ""
def handle_data(self, data):
if self.url:
self.text += data
def get_links(url):
response = urllib2.urlopen(url)
parser = ExtractTextLinkParser()
parser.feed(response.read())
parser.close()
links = parser.links
return [l for l in links
if l[0].find("://") != -1 and not l[0].startswith(url)]
links = get_links("http://b.hatena.ne.jp/hotentry")
links = [l for l in links if urlparse(l[0])[0]][3:]
for url, title in links[:10]:
print "[%s:title=%s]" % (url, title.decode("utf-8", "replace"))
テキストエディタでWebサイト構築をガンバル人へ(1/3) − @IT
日本の携帯を高くしている真犯人は
404 Blog Not Found:38歳までに知ることになる、22歳の自分に教えてあげたいたった1つのこと
ウェブ制作・プログラマー・デザイナーのためのチートシート集 | コリス
やる夫がはてなブックマークを始めたようです。 - 朱雀式
2015年、テレビは「ニコ動」化する?――NRIが示す未来像 (1/2) - ITmedia News
パソコン好きが青色申告を体験してみると?:第1回 まずは税金ってナニ? (1/5) - ITmedia Biz.ID
らばQ : 42歳までに知ることになる、22歳の自分に教えてあげたい12のこと
「見て欲しい」の本質忘れるな--吉本が語るネット時代の権利者像:コラム - CNET Japan
「真のゆとり教育」が生んだ18歳天才プログラマー トレンド-インタビュー:IT-PLUS