急上昇Buzzword抽出器

[Python] : 急上昇Buzzword抽出器

Buzzword抽出

先日Yahooさんの検索ランキングがリニューアルされたこともあり、今流行っているBuzzwordを自動抽出可能なプログラムを作成します。Buzzwordを抽出する対象はYahoo検索ランキング、Googleトレンド、Naverトピックワードランキング、kizasi、TweetBuzzです。これらのメディアから現在の検索、ブログ、twitterでのBuzzwordを把握出来ます。

BuzzwordSample

Buzzword抽出器により出力したデータは以下の内容になりました。定性的な評価から一番旬なデータで量を持ったページはYahoo! SearchRankingだと思います。Google Trendは1日のデータが1件ずつで過去1週間のデータを記録しているので、Yahooに比べると劣ってしまいます。またブログやTweet情報はやや新鮮さに欠けるのと現在のTrendを表している単語が少ないように感じました。

DataFormat
Lavel : data1 \t data2 \t data3 .....
Yahoo! SearchRanking
YahooBuzzword : 菅野美穂 オサート    河西里音    福岡大仏    武井咲 ガンバ大阪   トキハソース  青山草太    高橋愛 北総鉄道    ロアッソくん
Google Trend
GoogleBuzzword : 堺雅人 仲里依紗    南海トラフ   プエルトリコ  Wbc ローマ法王   メタンハイドレート   WBC 野球
Naver TopicwordRanking
NaverBuzzword : 平愛梨  ももいろクローバ... Aimer   大島優子    白鵬  一休.com  田中れいな   由紀さおり   市井紗耶香   小泉麻耶    藤井フミヤ   ナイナイ岡村  IKEA 朝食 全ツイート履歴 神田愛花    菅野美穂    江角マキコ   東京 桜    
Kizasi
KizasiBuzzword : 阿部主将    放送記念日   小学校卒業式  吉田美和    センバツ高校野球    春分  パルテナ    修了式 女満別 泉佐野市
TweetBuzz Hotkeyword
TweetBuzzword : フィギュアスケート    民主党 香川真司    AKB48   山口組 本田圭佑    キム・ヨナ   安倍晋三    サイバー攻撃  シャープ    自民党 台湾  WBC TPP IPS細胞   サムスン    新垣結衣    広島  キプロス    パク・シフ   名古屋市    北海道 佳子  IPアドレス
All
All : 菅野美穂   オサート    河西里音    福岡大仏    武井咲 ガンバ大阪   トキハソース  青山草太    高橋愛 北総鉄道    ロアッソくん  堺雅人 仲里依紗    南海トラフ   プエルトリコ  Wbc ローマ法王   メタンハイドレート   WBC 野球  平愛梨 ももいろクローバ... Aimer   大島優子    白鵬  一休.com  田中れいな   由紀さおり   市井紗耶香   小泉麻耶    藤井フミヤ   ナイナイ岡村  IKEA 朝食 全ツイート履歴 神田愛花    江角マキコ   東京 桜    阿部主将    放送記念日   小学校卒業式  吉田美和    センバツ高校野球    春分  パルテナ    修了式 女満別 泉佐野市    フィギュアスケート   民主党 香川真司    AKB48   山口組 本田圭佑    キム・ヨナ   安倍晋三    サイバー攻撃  シャープ    自民党 台湾  WBC TPP IPS細胞   サムスン    新垣結衣    広島  キプロス    パク・シフ   名古屋市    北海道 佳子  IPアドレス

Buzzword抽出器

下のPythonコードを実行すると上のメディアに掲載されているBuzzwordを出力します。

#!/usr/bin/env python
# -*- coding: utf-8 -*-
# buzzword抽出器

import sys,re,urllib,urllib2
f = open( 'buzzword.txt', 'w' )
opener = urllib2.build_opener()
ua = 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.51.22 (KHTML, like Gecko) Version/5.1.1 Safari/    534.51.22'
referer = 'http://www.yahoo.co.jp/'
opener.addheaders = [( 'User-Agent', ua ),( 'Referer', referer )]
buzzword = []

## yahoo module
yahoo_url = "http://searchranking.yahoo.co.jp/"
try: 
   content = opener.open( yahoo_url ).read()
   if re.compile( r'
    (.|\n)*?
'
, re.M ).search( content ) is not None: tmp = re.compile( r'
    (.|\n)*?
'
, re.M ).search( content ).group(0) data = re.compile( r'(.*?)', re.M ).findall( tmp ) info = "YahooBuzzword : " for node in data: buzzword.append( node ) info = info + node + "\t" f.write( info + "\n" ) except Exception: print "Failed Yahoo Buzzword" ## google module google_url = "http://www.google.co.jp/trends/" try: content = opener.open( google_url ).read() if re.compile( r'.*?', re.M ).search( content ) is not None: data = re.compile( r'(.*?)', re.M ).findall( content ) info = "GoogleBuzzword : " for node in data: buzzword.append( node ) info = info + node + "\t" f.write( info + "\n" ) except Exception: print "Failed Google Buzzword" ## naver module naver_url = "http://topicwords.naver.jp/" try: content = opener.open( naver_url ).read() if re.compile( r'.*?', re.M ).search( content ) is not None: data = re.compile( r'(.*?)', re.M ).findall( content ) info = "NaverBuzzword : " for node in data: buzzword.append( node ) info = info + node + "\t" f.write( info + "\n" ) except Exception: print "Failed Naver Buzzword" ## kizasi module kizasi_url = "http://kizasi.jp/" try: content = opener.open( kizasi_url ).read() if re.compile( r'(.*?)', re.M ).search( content ) is not None: data = re.compile( r'(.*?)', re.M ).findall( content ) info = "KizasiBuzzword : " for node in data: buzzword.append( node ) info = info + node + "\t" f.write( info + "\n" ) except Exception: print "Failed Kizasi Buzzword" ## tweetbuzz module tweetbuzz_url = "http://tweetbuzz.jp/" try: content = opener.open( tweetbuzz_url ).read() if re.compile( r'

.*?

  1. (.*?)
'
, re.M ).search( content ) is not None: tmp = re.compile( r'

.*?

  1. (.*?)
'
, re.M ).search( content ).group(0) data = re.compile( r'(.*?)', re.M ).findall( tmp ) info = "TweetBuzzword : " for node in data: buzzword.append( node ) info = info + node + "\t" f.write( info + "\n" ) except Exception: print "Failed Tweet Buzzword" ## all all = sorted( set( buzzword ), key=buzzword.index ) info = "All : " for node in all: info = info + node + "\t" f.write( info + "\n" ) f.close()

Python クックブック 第2版

Python クックブック 第2版