HTMLParserを使ってページのタイトルを取得
発端
ページのタイトルタグを取る必要があったので、正規表現で書こうかと思ったけど諦めた。理由はtitleタグには改行とかコメントアウトされている可能性があるから。
<title> タイトルだよー </title> --------------------------------------------- <!-- <title>偽タイトル</title> --> <title>こっちが本物のタイトル</title>
解決策
Python標準ライブラリ内にHTMLパーサのないかなと思って探したらHTMLParserというライブラリが見つかった。これを使いページのタイトルを取得してみた。
下記と同じ物HTMLParserを使ったページタイトルの取得 · GitHub
from HTMLParser import HTMLParser import urllib2 class GetTitle(HTMLParser): def __init__(self): HTMLParser.__init__(self) self.title_flag = False def handle_starttag(self, tag, attrs): if tag == 'title': self.title_flag = True def handle_data(self, data): if self.title_flag: self.title = data self.title_flag = False def main(): url = 'http://twitter.com' response = urllib2.urlopen(url) gt = GetTitle() gt.feed(response.read()) gt.close() print '%s - %s' % (url, gt.title) if __name__ == '__main__': main()
参考文献
簡単なHTMLParserについて知れた htmllib.HTMLParserでリンクを抽出 - ひきメモ