如何使用WWW :: Mechanize访问通过下拉列表拆分的页面

问题描述:

我有从以下链接下载的基因列表。 在下拉列表中将其分成60个页面的问题。如何使用WWW :: Mechanize访问通过下拉列表拆分的页面

http://diana.cslab.ece.ntua.gr/micro-CDS/index.php?r=search/results_mature&mir=hsa-miR-3131&kwd=MIMAT0014996 

我该如何让WWW::Mechanize访问所有页面中的所有基因?

这是当前的代码,我有:

use WWW::Mechanize; 
use strict; 
use warnings; 

my $url = "http://diana.cslab.ece.ntua.gr/micro-CDS/index.php?r=search/results_mature&mir=hsa-miR-3131&kwd=MIMAT0014996"; 

my $mech = WWW::Mechanize->new(); 
$mech->agent_alias("Windows IE 6"); 

$mech->get($url); 
#only access the first page. 
+0

WWW :: Mechanize不会做Javascript。见http://search.cpan.org/~jesse/WWW-Mechanize-1.72/lib/WWW/Mechanize/FAQ.pod#JavaScript – Barmar 2013-04-18 06:33:45

+0

你确定该网站没有API,所以你没有从互动网页上刮掉这些东西? – Barmar 2013-04-18 06:34:31

页下拉使用Javascript实现。你不能用Mechanize做到这一点,因为它没有实现Javascript。见FAQ

这是很容易 - 页码是内部URL(这是页#11):

my $page_number = 11; 
$mech->get("http://diana.cslab.ece.ntua.gr/micro-CDS/index.php?r=search%2Finitializesearch&keywords=MIMAT0014996&thr=0.41&kegg=&page=" . $page_number); 

$pages = 60; 
for($i=1;$pages<=60;$i++){ 
    $url = "http://diana.cslab.ece.ntua.gr/micro-CDS/index.php?r=search%2Finitializesearch&keywords=MIMAT0014996&thr=0.41&kegg=&page=$i" 
    $mech->get($url); 
} 

这应该这样做。您只需遍历60个页面,每次修改URL。