使用python查找网站的PageRank

使用python查找网站的PageRank,python,web-crawler,pagerank,Python,Web Crawler,Pagerank,因此,我正在用数值线性代数写一篇本科生论文,并将其应用于我选择的一个问题,我选择了PageRank算法,通过幂法 我编写了一段python代码,实现了Power方法来计算我指定的转换矩阵的页面排名。这不是很有用,因为我实际上想计算一个大型网站的PageRank,矩阵会很大 有没有办法在我的python代码中添加一个爬虫程序或冲浪程序来生成任何网站的转换矩阵,然后执行算法?我知道它在MATLAB中非常简单,但我不想为此而付钱 import numpy as np #original trans

因此,我正在用数值线性代数写一篇本科生论文,并将其应用于我选择的一个问题,我选择了PageRank算法,通过幂法

我编写了一段python代码,实现了Power方法来计算我指定的转换矩阵的页面排名。这不是很有用,因为我实际上想计算一个大型网站的PageRank,矩阵会很大

有没有办法在我的python代码中添加一个爬虫程序或冲浪程序来生成任何网站的转换矩阵,然后执行算法?我知道它在MATLAB中非常简单,但我不想为此而付钱

import numpy as np 

#original transition matrix a

a = np.matrix ([
[0,0,0,0,0,0],
[1.0,0,1.0/3.0,1.0/3.0,1.0/4.0,0],
[0,1.0/3.0,0,1.0/3.0,1.0/4.0,0],
[0,1.0/3.0,1.0/3.0,0,1.0/4.0,0],
[0,1.0/3.0,1.0/3.0,1.0/3.0,0,0],
[0,0,0,0,1.0/4.0,0]])
print 'a:', '\n',a
#now make the google matric with damping factor 0.85
b =(float(1)/float(6))*np.matrix([
[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1],
[1,1,1,1,1,1]])
m = 0.15*a+0.85*b
print 'm:','\n',m
#now define the original normalized vector v
v = (float(1)/float(6))*np.matrix([
[1],
[1],
[1],
[1],
[1],
[1]])
print 'v:','\n',v
count = 0
#now define the pagerank function, and then apply m to the vector until it 
#converges. The converge difference is set to 0.001
def pagerank(v):
global count 
if sum(abs(m*v-v))>0.001 :
    count+=1
    print 'count',count 
    print m*v
    print 'sum(abs(m*v-v))', sum(abs(m*v-v))
    return pagerank(m*v)
else:
    count+=1
    print 'count', count 
    print m*v
    print 'sum(abs(m*v-v))', sum(abs(m*v-v))
    return m*v
result = pagerank(v)
#now we print the result 
print 'result', '\n', sorted(result, reverse=True)    
这是我的代码,一开始我定义了矩阵(a),这将是网页的过渡矩阵,我根据一个6页的简单系统制作了这个矩阵


我希望代码生成这个矩阵为任何网站我想要的,通过使用链接

在MATLAB中,什么是简单的?不管怎样,你不必为这类函数付费,你有Octave,它的功能基本相同,并且是开源的,在Python中你有numpy和scipy,那么到底是什么问题呢?你必须更明确,并向我们展示一些代码…在MATLAB中使用冲浪者很简单,我会得到倍频程,但我有一个mac,我不知道如何安装它。我希望我的代码使用爬虫来生成与网站相关联的所有超链接的矩阵,然后我可以使用我的代码来计算网站的PageRank。在MATLAB中,我听说有一个命令可以用于此,但在python中并不容易