首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mechanize-抓取传递给$url2的变量的<form>操作

Mechanize-抓取传递给$url2的变量的<form>操作
EN

Stack Overflow用户
提问于 2016-08-30 17:06:36
回答 1查看 82关注 0票数 1

我已经使用WWW-Mechanize登录页面,提交表单数据,然后抓取数据/显示数据等等。现在的问题是,我从哪里抓取的源站点在登录后开始使用另一个变量( POST数据),这是一个随机时间的动态URL (它是我登录的人的用户ID,似乎正在改变)。我似乎找不到一种方法来获取操作链接以将其存储为变量:$url2

代码语言:javascript
复制
<form name="searchForm" method="post" action="../Emsresponse/?id=106"  onsubmit="return validate()">

当我运行我的代码时,我存储原始的$url以及$url2,这是一个略微不同的/$url/ URL,变量在,但它是动态的,所以我需要在$url2中存储操作部分,这样我就不必一直更改静态URL变量。

例如,这是有效的:

代码语言:javascript
复制
my $url = "www.whatever.com/form";
my $url2 = "www.whatever.com/Ems/id?102";

我只需要将action (即:../Emsresponse/?id=106)中的数据存储为一个变量,但我找不到一种可靠的方法来实现这一点。

因此,我需要$url2包含?id= have it-it-now,这样我就不必每两周修改一次代码。

代码语言:javascript
复制
$url  = "www.page.com";
$url2 = "www.page.com/userName/id?=101";
my $r = $mech->get($url2);

#  if we are not logged in $r hold has a key previous holding the http response from the 302 redirect call to the login page
if (1) {

    # if we were redirected to the login location we are not logged in
    if (1) {
        $mech->get($url);
        if ( $mech->success() ) {
            $mech->form_name("loginForm");
            $mech->set_fields( LoginUserName => ... );
            $mech->click();
            if ( $mech->success() ) {
                $authme = 0;
            }

            # check for success --> this is important to not break the script on any errors
            if (   $authme == 0
                && $mech->success() )
            {
                $mech->cookie_jar->save($cookie_file);

                $mech->form_name("searchForm");
                $mech->set_fields( DateStart => $date_yesterday );
                $mech->click();
                if ( $mech->success() ) { }
EN

回答 1

Stack Overflow用户

发布于 2016-08-30 17:48:55

似乎有一个服务器端问题导致了这个问题..

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39223178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档