Pythonはオンラインマイクロブログデータの視覚化を実現します

オンラインWeibo [データ視覚化](https://cloud.tencent.com/product/yuntu?from=10680)、Weiboデータをリアルタイムで収集し、さまざまなワードクラウドを介してデータを表示します

完全なコードgiteeアドレス:https://gitee.com/lyc96/weibo

  1. 最初にレンダリングが来ます(ショックを抑制します)

1 )スターのフルネームを入力してください

2 )クリックして表示すると、星の音声とテキストの視覚化が表示されます。6つのグラフィックがあり、自由に切り替えることができます

  1. プログラム機能紹介

1 )有名人の名前に基づいて有名人のWeiboコメントをクロールし、テキストファイルに保存します(プロジェクトにはデータベースストレージは含まれません)。プログラムは、同じWeiboが繰り返しクロールされないように、日付に従ってクロールします。 。

2 )収集された有名人のマイクロブログテキストはtxtテキストに保存され、stylecloudはワードクラウドの生成に使用されます(Web側で切り替えることができる6つのグラフィックワードクラウドがあります)

  1. pythonバックエンドコード
# - *- coding: utf-8-*-"""
Created on Sun Jul 1912:03:562020

@ author:Li Yunchen
"""
import requests
import time
import os
import json
from stylecloud import gen_stylecloud
import jieba
from flask_cors import CORS
from flask import Flask,render_template,request,Response,redirect,url_for
# イントラネットIP
app =Flask(__name__)
### ここで、インデックス内の独自のIPアドレスに変更します.htmlで2回変更することを忘れないでください
ip="192.168.0.112"
###
root="static/data/"
pagedata="pagedata/"
textdata="textdata/"

# スリープ時間入力intは休憩時間であり、ページの読み込みとインターネット速度の理由により、ページ要素を読み込むためのページ時間を指定する必要があります。
def s(int):
 time.sleep(int)
headers ={'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36'}"""初期化"""
def initialization():
 # クロールレコードテキストを初期化します
 if not os.path.exists(root):
  os.mkdir(root)if not os.path.exists(root+pagedata):
  os.mkdir(root+pagedata)if not os.path.exists(root+textdata):
  os.mkdir(root+textdata)

def write(path,t):
 # クロールされたページの現在の数を記録します
 withopen(path,"a+",encoding='utf8')as f:
  f.writelines(str(t))
  f.writelines("\n")

def search(name_s,url,since_id):

  # url ="https://m.weibo.cn/api/container/getIndex?uid=1566301073&t=0&luicode=10000011&lfid=100103type=1&q=Jia Ling&type=uid&value=1566301073&containerid=1076031566301073"
  start=1if since_id is not None and len(since_id)>1:
   url+="&since_id="+since_id
   start=0
  response = requests.get(url,headers = headers)

  datas = response.json()
  # print(data)
  ok =str(datas['ok'])try:withopen(root+pagedata+name_s+".txt","r")as f:    #ファイルオブジェクトを設定する
    pagelist = f.read()
  except:
   pagelist=[]if ok is not None and ok=='1':
   data = datas['data']
   since_ids = data['cardlistInfo']['since_id']print(since_ids)
   cards = data['cards']print(len(cards))for i inrange(start,len(cards)):
    date = cards[i]['mblog']['created_at']ifstr(date) not in pagelist:
     text1 = cards[i]['mblog']['text']write(root+textdata+name_s+".txt",clean(text1))write(root+pagedata+name_s+".txt",date)"""絵文字を削除する...,htmlタグを待つ"""
def clean(s):
 istart=-1try:
  istart = s.index('<')
  iend = s.index('>')
  s = s[:istart]+s[iend+1:]
 except:
  pass
 try:
  istart = s.index('<')
 except:
  pass
 if istart>=0:returnclean(s)else:
  # print(s)return(s)

def geturl(name_g):
 url1="https://m.weibo.cn/api/container/getIndex?containerid=100103type=1%26q="+name_g+"&page_type=searchall"
 response = requests.get(url1,headers = headers)
 datas = response.json()
 uid =str(datas['data']['cards'][0]['card_group'][0]['user']['id'])
 newurl ="https://m.weibo.cn/api/container/getIndex?uid="+uid+"&t=0&luicode=10000011&lfid=100103type=1&q="+name_g+"&type=uid&value="+uid+"&containerid=107603"+uid
 return newurl

def jieba_cloud(file_name,icon):withopen(file_name,'r',encoding='utf8')as f:
  word_list = jieba.cut(f.read())
  result =" ".join(word_list) #参加者
  # 中国のクラウドワードの作成
  icon_name=""if icon=="1":
   icon_name=''
  elif icon=="2":
   icon_name='fas fa-dragon'
  elif icon=="3":
   icon_name='fas fa-dog'
  elif icon=="4":
   icon_name='fas fa-cat'
  elif icon=="5":
   icon_name='fas fa-dove'
  elif icon=="6":
   icon_name='fab fa-qq'"""
  # icon_name='',#国旗
  # icon_name='fas fa-dragon',#プテロダクチル
  icon_name='fas fa-dog',#犬
  # icon_name='fas fa-cat',#ネコ
  # icon_name='fas fa-dove',#鳩
  # icon_name='fab fa-qq',#qq
        """
  picp=file_name.split('.')[0]+str(icon)+'.png'if icon_name is not None and len(icon_name)>0:gen_stylecloud(text=result,icon_name=icon_name,font_path='simsun.ttc',output_name=picp) #中国語のフォントを追加する必要があります。そうしないと、形式が間違っています
  else:gen_stylecloud(text=result,font_path='simsun.ttc',output_name=picp) #中国語のフォントを追加する必要があります。そうしないと、形式が間違っています

 return picp
############################ フラスコのルーティング
# メインページに入る
@ app.route('/')
def index():returnrender_template('index.html')
# 写真を撮る
@ app.route('/find')
def find():
 # global history
 # データ収集
 name_i = request.args.get('name')if not os.path.exists(root+textdata+name_i+'.txt'):
  u =geturl(name_i)search(name_i,u,"")
 # ワードクラウドを作る
 file_name = root+textdata+name_i+'.txt'
 picpath =jieba_cloud(file_name,"1")returnResponse(json.dumps(picpath), mimetype='application/json')
# トグルアイコン
@ app.route('/switchs')
def switchs():
 # global history
 # データ収集
 name_i = request.args.get('name')
 icon = request.args.get('ic')
 # ワードクラウドを作る
 file_name = root+textdata+name_i+'.txt'
 picpath =jieba_cloud(file_name,str(icon))returnResponse(json.dumps(picpath), mimetype='application/json')
############################ end

if __name__ =="__main__":"""初期化"""initialization()
 app.run(host=''+ip, port=5000,threaded=True)
  1. 完全なコードgiteeアドレス:https://gitee.com/lyc96/weibo

Recommended Posts

Pythonはオンラインマイクロブログデータの視覚化を実現します
Pythonはオンライン翻訳を実現します
Pythonはオンライン翻訳機能を実現します
Pythonは3Dマップの視覚化を実現します
02.Pythonデータタイプ
Pythonデータモデル
Pythonデータ分析
pythonデータ構造
Pythonデータ形式-CSV
Pythonは宇宙船戦争を実現します
Pythonデータ分析-データ更新
Pythonデータ分析-関数の適用
Pythonは写真のステッチを実現します
Pythonデータ分析-データ選択
Pythonの基本的なデータタイプ
Pythonの基本的なデータタイプ
Pythonデータの視覚化:Pythonの有名人は誰ですか?
Pythonは戦車戦を実現
Pythonデータ分析-データ確立
Python3は飛行機戦争ゲームを実現します
Pythonデータサイエンス:ニューラルネットワーク
Pythonの一般的なデータ構造の照合
Pythonはリンゴを食べるゲームを実現します
Python3クローラーデータクリーニング分析
Pythonは単純なXMLデータを解析します
Pythonデータサイエンス:ロジスティック回帰
Pythonはフェイスサインインシステムを実現します
Pythonのデータ構造とアルゴリズム
Pythonデータサイエンス:正規化方法
Pythonデータサイエンス:関連分析
Pythonは写真のバッチ命名を実現します
Pythonデータサイエンス:線形回帰
PythonFakerデータ偽造モジュール
Pythonデータサイエンス:Chi-Square Test