Chinaunix
标题:
熟悉Win32::IEAutomation的朋友请进
[打印本页]
作者:
lhohoz
时间:
2013-07-26 09:30
标题:
熟悉Win32::IEAutomation的朋友请进
本帖最后由 lhohoz 于 2013-07-26 12:47 编辑
#!/usr/bin/perl
use warnings;
use strict;
use Win32::IEAutomation;
my $ie = Win32::IEAutomation->new();
$ie->gotoURL('目标页面');
my @url = map { $_->linkUrl() } $ie->getAllLinks(); #获取所有地址
my @link;
foreach my $url (@url) {
push (@link, $url) if $url =~ m/&nh?id=/; #捕获目标地址
}
foreach my $link (@link) {
$ie->getLink('linkurl:', "$link")->Click;
$ie->getButton('value:', '确认')->Click;
$ie->gotoURL('目标页面');
}
复制代码
多谢stanley_tam 朋友,问题已解决,更新CODE
作者:
laputa73
时间:
2013-07-26 12:00
click第一个链接后页面就跳转了?
作者:
stanley_tam
时间:
2013-07-26 12:04
click了之后对可以说是另外一个页面,得重新抓取link,再click。
作者:
lhohoz
时间:
2013-07-26 12:19
回复
2#
laputa73
是的,提示can't call method "click" on an undefined value at Win32IEAutomation.pl line 14
是不是第二个元素没被识别还是?但for循环完全可以输出全部页面的地址
作者:
stanley_tam
时间:
2013-07-26 12:26
不会识别的。得从my @url = map { $_->linkUrl() } $ie->getAllLinks(); 开始获取所有地址,至于是第一个还是第二个,你得加一些其他的因素来控制,如果link有编号1,2,3之类的,或者link的text,就跟link放一块成一个数组的数组([1, link1],[2, link2],),在弄一个变量来记录已经点过的(不知道你那网页点过link是消失还是其他的。。。),如果已经点过就skip
回复
4#
lhohoz
作者:
lhohoz
时间:
2013-07-26 12:27
stanley_tam 发表于 2013-07-26 12:04
click了之后对可以说是另外一个页面,得重新抓取link,再click。
目前的情况是就停在第一个元素页面了,因为从第二个开始报错。
作者:
lhohoz
时间:
2013-07-26 12:32
本帖最后由 lhohoz 于 2013-07-26 12:32 编辑
回复
5#
stanley_tam
点过就消失了,连接类似nid=2888,nid=2999,没规律,目前只是把捕获到push到一个@link里,不知楼上朋友提到的如何做,会不会太复杂= =
作者:
lhohoz
时间:
2013-07-26 12:34
回复
7#
stanley_tam
回主页看来是个好主意,我试试,多谢
作者:
stanley_tam
时间:
2013-07-26 12:44
加个循环
#!/usr/bin/perl
use warnings;
use strict;
use Win32::IEAutomation;
sub get_links;
my $ie = Win32::IEAutomation->new();
while (1){
$ie->gotoURL('网址省略');
my @url = map { $_->linkUrl() } $ie->getAllLinks(); #获取所有地址
my @link = grep {/&nh?id=/} @url;
if (scalar @link) {
my $first_link = $link[0];
$ie->getLink('linkurl:', $first_link)->Click;
}
else {
last;
}
}
__END__
复制代码
回复
8#
lhohoz
作者:
lhohoz
时间:
2013-07-26 12:44
stanley_tam 发表于 2013-07-26 12:04
click了之后对可以说是另外一个页面,得重新抓取link,再click。
可行可行!!大感谢:wink: ,已更新顶楼代码
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2