import networkx as net
from urllib import request
def read_friends(g,name):
response = request.urlopen('https://www.livejournal.com/misc/fdata.bml?user='+name)
for line in response.readlines():
parts = line.split()
if len(parts) == 0:
continue
if parts[0] =='
g.add_edge(parts[1],name)
else:
g.add_edge(name,parts[1])
def snowball_sampling(g,center,max_depth = 1,current_depth = 0,taboo_list=[]):
print(center,current_depth,max_depth,taboo_list)
if current_depth == max_depth:
print('out of depth')
return taboo_list
if center in taboo_list:
print('taboo')
return taboo_list
else:
taboo_list.append(center)
read_friends(g,center)
for node in g.neighbors(center):
taboo_list = snowball_sampling(g,node,current_depth=current_depth+1,max_depth = max_depth,taboo_list=taboo_list)
def trim_degrees(g,degree = 1):
g2 = g.copy()
d = net.degree(g2)
print(g2.nodes())
L = g2.nodes()
for x in range(len(L)):
if x == 0:
continue
else:
L[x] = L[x].decode('utf-8')
print(L)
'''
for n in L:
if d[n] <= degree:
g2.remove_node(n)
return g2
'''
g = net.Graph()
snowball_sampling(g,'kozel_na_sakse')
core = trim_degrees(g)
print(len(core))
L[x] = L[x].decode('utf-8')这一行报错,错误原因KeyError:1
单独取出接收到字节使用循环转换得到字符串是没问题的,但是在这就报错