Я сильно защитил бы Вас взгляд NetworkX. Это - проверенный в бою боевой конь и первый инструмент, которого большинство типов 'исследования' достигает для того, когда они должны сделать анализ основанных на сети данных. Я управлял графиками с 100 с тысяч краев без проблемы на ноутбуке. Его многофункциональное и очень простое в использовании. Вы будете фокусироваться больше на проблеме под рукой, а не деталях в конкретной реализации.
Пример ErdЕ‘s-RГ©nyi случайное поколение графика и анализ
"""
Create an G{n,m} random graph with n nodes and m edges
and report some properties.
This graph is sometimes called the Erd##[m~Qs-Rényi graph
but is different from G{n,p} or binomial_graph which is also
sometimes called the Erd##[m~Qs-Rényi graph.
"""
__author__ = """Aric Hagberg (hagberg@lanl.gov)"""
__credits__ = """"""
# Copyright (C) 2004-2006 by
# Aric Hagberg
# Dan Schult
# Pieter Swart
# Distributed under the terms of the GNU Lesser General Public License
# http://www.gnu.org/copyleft/lesser.html
from networkx import *
import sys
n=10 # 10 nodes
m=20 # 20 edges
G=gnm_random_graph(n,m)
# some properties
print "node degree clustering"
for v in nodes(G):
print v,degree(G,v),clustering(G,v)
# print the adjacency list to terminal
write_adjlist(G,sys.stdout)
Визуализация также проста:
[еще 119] визуализация: http://jonschull.blogspot.com/2008/08/graph-visualization.html
Больше всего меня поразила подпрограмма "Mechanize-> form_number", которая начинается с 1, тогда как типичные программы начинают свой индекс с 0. Если кто-то хочет знать, как загрузить заголовки ответа или загрузить вложение заголовка s, это способ сделать это.
Вот полный код, чтобы сделать то, что я хотел.
#!/usr/bin/perl
use strict;
use WWW::Mechanize;
my $url = 'http://divxsubtitles.net/page_subtitleinformation.php?ID=111292';
my $m = WWW::Mechanize->new(autocheck => 1);
$m->get($url);
$m->form_number(2);
$m->click();
my $response = $m->res();
my $filename = $response->filename;
if (! open ( FOUT, ">$filename" ) ) {
die("Could not create file: $!" );
}
print( FOUT $m->response->content() );
close( FOUT );
Я попробовал ваш код, и он возвращает стек HTML, из которого единственными http: //
ссылками были:
http://www.w3c.org http://ad.z5x.net http://divxsubtitles.net http://feeds2read.net http://ad.z5x.net http://www.google-analytics.com http://cls.assoc-amazon.comс использованием кода
my $content = $m->response->content();
while ( $content =~ m{(http://[^/\" \t\n\r]+)}g ) {
print( "$1\n" );
}
Итак, мой комментарий к вам:
1. добавьте в свой код use strict;
, вы программируете на отказ, если вы этого не сделаете
2. Прочтите выходной HTML-код и определите, что делать дальше, вы этого еще не сделали и поэтому задали неполный вопрос. Если вы не укажете URL-адрес, который хотите загрузить, вы просите кого-то другого написать для вас программу.
После того, как вы определили URL-адрес, который хотите загрузить, его просто получить и затем записываем содержимое ответа в файл. например,
if ( ! open( FOUT, ">output.bin" ) ) {
die( "Could not create file: $!" );
}
binmode( FOUT ); # required for Windows
print( FOUT $m->response->content() );
close( FOUT );