読者です 読者をやめる 読者になる 読者になる

Web就活日記

愛と夢と人生について書きます

急上昇Buzzword抽出器

自然言語処理 Python

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'<ul class="patB">(.|\n)*?</ul>', re.M ).search( content ) is not None:
      tmp  = re.compile( r'<ul class="patB">(.|\n)*?</ul>', re.M ).search( content ).group(0)
      data = re.compile( r'<a href=.*?>(.*?)</a>', 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'<span class="hottrends-carousel-single-trend-title">.*?</span>', re.M ).search( content ) is not None:
      data = re.compile( r'<span class="hottrends-carousel-single-trend-title">(.*?)</span>', 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'<span class="mdSRList01TtlTxt">.*?</span>', re.M ).search( content ) is not None:
      data = re.compile( r'<span class="mdSRList01TtlTxt">(.*?)</span>', 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'<td><a href=".*?">(.*?)</a></td>', re.M ).search( content ) is not None:
      data = re.compile( r'<td><a href=".*?">(.*?)</a></td>', 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'<div class="section-lv3" id="cloud"><h3>.*?</h3><ol><li><strong>(.*?)</strong></li></ol></div>', re.M ).search( content ) is not None:
      tmp  = re.compile( r'<div class="section-lv3" id="cloud"><h3>.*?</h3><ol><li><strong>(.*?)</strong></li></ol></div>', re.M ).search( content ).group(0)
      data = re.compile( r'<a href=".*?">(.*?)</a>', 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版

スポンサーリンク