def index(): data = dict() nodes = common_util.readjson(config.TWITTER_NODES_FILE) edges = common_util.readjson(config.TWINT_EDGES_FILE) data['nodes'] = nodes data['edges'] = edges return render_template("graph_show.html", data=json.dumps(data))
def socialnetindex(): data = dict() nodes = common_util.readjson(config.TWITTER_NODES_FILE) edges = common_util.readjson(config.TWINT_EDGES_FILE) data['nodes'] = nodes data['edges'] = edges print(data) return render_template('socialnet/socialnetindex.html', data=json.dumps(data))
def main(): ''' @Descripttion: main function @param {type} @return: ''' DG = nx.DiGraph() twitter_nodes = common_util.readjson(config.TWITTER_NODES_FILE) twitter_edges = common_util.readjson(config.TWITTER_EDGES_FILE) ids_names = get_id_name(twitter_nodes) get_graph(DG, twitter_nodes, twitter_edges) # nx.draw_networkx(DG,labels=ids_names,with_labels=True, font_weight='bold') # plt.show() # 聚集系数 # print(nx.clustering(DG)) # 社群 有向图未实现 # print(list(nx.connected_components(DG))) id_degrees = sorted(dict(DG.degree).items(), key=lambda x: x[1], reverse=True) for id_degree in id_degrees[:10]: print(ids_names[id_degree[0]], id_degree[1])
import twint import twitter import config api = twitter.Api(consumer_key=config.CONSUMER_KEY, consumer_secret=config.CONSUMER_SECRET, access_token_key=config.ACCESS_TOKEN, access_token_secret=config.ACCESS_SECRET, proxies=config.proxy) '''Twint Config''' c = twint.Config() c.Proxy_host = '127.0.0.1' c.Proxy_port = '1080' c.Proxy_type = 'http' names = list(common_util.readjson(config.TWINT_NODES_FILE).keys()) def get_tweet_related_china(names): ''' @description: scrapy realDonaldTrump's tweets related to China and save output file @param {names} @return: ''' for name in names: print(name) c = twint.Config() c.Proxy_host = '127.0.0.1' c.Proxy_port = '1080' c.Proxy_type = 'http' c.Username = name
from utils import common_util api = twitter.Api(consumer_key=config.CONSUMER_KEY, consumer_secret=config.CONSUMER_SECRET, access_token_key=config.ACCESS_TOKEN, access_token_secret=config.ACCESS_SECRET, proxies=config.proxy) '''Twint Config''' c = twint.Config() c.Proxy_host = '127.0.0.1' c.Proxy_port = '1080' c.Proxy_type = 'http' # name_id字典 name_id = common_util.readjson(config.TWINT_NODES_FILE) print(type(name_id)) def get_twitter_names(): ''' @description: get the twitter names @param {null} @return: ''' # pandas读入 data = pd.read_csv(config.TWITTER_NAMES_FILE, error_bad_lines=False) names = list(np.array(data['twitter@'])) print(names) names = [name[1:] for name in names] return names
def shortestpath(): form = ShortestPathForm() data = dict() nodes = common_util.readjson(config.TWITTER_NODES_FILE) edges = common_util.readjson(config.TWINT_EDGES_FILE) data['nodes'] = nodes data['edges'] = edges G = nx.Graph() print(nodes) print(edges) id_id_map = {} # 从node的id字段到这个id所在的序号 id_num_map = {} data = dict() data_nodes = [] data_edges = [] path = "" if form.validate_on_submit(): name1 = form.name1.data name2 = form.name2.data id1 = -1 id2 = -1 for i in range(0, len(nodes)): print(nodes[i]) G.add_node(i) id_id_map[nodes[i]['id']] = i if nodes[i]['label'] == name1: id1 = nodes[i]['id'] elif nodes[i]['label'] == name2: id2 = nodes[i]['id'] for i in range(0, len(edges)): one = edges[i]['from'] two = edges[i]['to'] if one in id_id_map and two in id_id_map: G.add_edge(id_id_map[one], id_id_map[two]) if nx.has_path(G, id_id_map[id1], id_id_map[id2]): result = nx.shortest_path(G, id_id_map[id1], id_id_map[id2]) print(result) path = str(result) path = path + "\n" nametemp = nodes[result[0]]['label'] path = path + nametemp data_nodes.append(nodes[result[0]]) lastid = nodes[result[0]]['id'] newid = -1 for j in range(1, len(result)): node_num = result[j] name = nodes[node_num]['label'] path = path + "->" + name data_nodes.append(nodes[node_num]) newid = nodes[result[j]]['id'] temp = {} temp['from'] = lastid temp['to'] = newid data_edges.append(temp) lastid = newid else: print("No path between " + name1 + " and " + name2) path = "No path between " + name1 + " and " + name2 print(data_nodes) print(data_edges) data['nodes'] = data_nodes data['edges'] = data_edges print(data) return render_template('socialnet/shortestpath.html', form=form, path=path, data=json.dumps(data))