有没有PHP相当于Perl的WWW::Mechanize?

我正在寻找一个功能类似于Perl的WWW::Mechanize的库,但适用于PHP。基本上,它应该允许我使用简单的语法提交HTTP GET和POST请求,然后解析生成的页面并以简单的格式返回所有表单及其字段,以及页面上的所有链接。

我知道CURL,但它有点太准系统了,语法也很丑陋(大量的语句)curl_foo($curl_handle, ...)

澄清:

我想要一些比到目前为止的答案更高级别的东西。例如,在Perl中,你可以做这样的事情:

# navigate to the main page
$mech->get( 'http://www.somesite.com/' ); 

# follow a link that contains the text 'download this'
$mech->follow_link( text_regex => qr/download this/i );

# submit a POST form, to log into the site
$mech->submit_form(
    with_fields      => {
        username    => 'mungo',
        password    => 'lost-and-alone',
    }
);

# save the results as a file
$mech->save_content('somefile.zip');

要使用HTTP_Client或wget或CURL做同样的事情将是一项繁重的工作,我必须手动解析页面以查找链接,查找表单URL,提取所有隐藏字段等。我要求PHP解决方案的原因是我没有Perl的经验,我可能通过大量的工作来构建我需要的东西,但是如果我能在PHP中完成上述操作,那会快得多。


答案 1

SimpleTest的ScriptableBrowser可以独立于测试框架使用。我已经将它用于许多自动化工作。


答案 2

我觉得有必要回答这个问题,即使它是一个旧帖子......我一直在使用PHP curl,它不如WWW:Mechanize之类的东西,我正在切换到它(我想我会使用Ruby语言实现)。Curl已经过时了,因为它需要太多的“繁重工作”来自动化任何事情,最简单的可脚本浏览器对我来说看起来很有希望,但在测试它时,它不适用于我尝试的大多数Web表单......老实说,我认为PHP缺乏这种抓取,Web自动化,所以最好看看不同的语言,只是想发布这个,因为我已经在这个主题上花了无数个小时,也许它会在未来为其他人节省一些时间。


推荐