加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

PHP的Scraping Library – phpQuery?

发布时间:2020-12-13 13:22:04 所属栏目:PHP教程 来源:网络整理
导读:我正在寻找一个 PHP库,它允许我废弃网页并关注所有cookie并使用默认值预填充表单,这是最让我烦恼的. 我已经厌倦了必须将每个输入元素与xpath匹配,如果存在更好的东西,我会很高兴.我遇到过phpQuery,但手册不太清楚,我无法找到如何发出POST请求. 有人能帮我吗
我正在寻找一个 PHP库,它允许我废弃网页并关注所有cookie并使用默认值预填充表单,这是最让我烦恼的.

我已经厌倦了必须将每个输入元素与xpath匹配,如果存在更好的东西,我会很高兴.我遇到过phpQuery,但手册不太清楚,我无法找到如何发出POST请求.

有人能帮我吗?谢谢.

@Jonathan Fingland:

在browserGet()手册提供的示例中,我们有:

require_once('phpQuery/phpQuery.php');

phpQuery::browserGet('http://google.com/','success1');

function success1($browser)
{
    $browser->WebBrowser('success2')
    ->find('input[name=q]')->val('search phrase')
    ->parents('form')
    ->submit();
}

function success2($browser)
{
    echo $browser;
}

我想所有其他字段都被废弃并在GET请求中发回,我想用phpQuery :: browserPost()方法做同样的事情,但我不知道该怎么做.我正在尝试抓取的表单有一个输入令牌,我很乐意,如果phpQuery可以足够聪明地抓取令牌并让我更改其他字段(在这种情况下是用户名和密码),通过POST提交所有内容.

PS:请放心,这不会用于垃圾邮件.

见 http://code.google.com/p/phpquery/wiki/Ajax,特别是:

phpQuery :: post($url,$data,$callback,$type)

#data Object,String,将数据参数定义为Object或String. POST请求应该可以使用查询字符串格式,例如:

$data = "username=Jon&password=123456";
$url = "http://www.mysite.com/login.php";
phpQuery::post($url,$type)

由于phpQuery是一个jQuery端口,方法签名是相同的(文档直接链接到jquery站点 – http://docs.jquery.com/Ajax/jQuery.post)

编辑

两件事情:

还有一个phpQuery::browserPost功能可以更好地满足您的需求.

但是,请注意,仅在submit() or click()方法上调用success2回调,因此您可以在此之前填写所有表单字段.

例如

require_once('phpQuery/phpQuery.php');
phpQuery::browserGet('http://www.mysite.com/login.php','success1');
function success1($browser) {
  $handle = $browser
    ->WebBrowser('success2');
  $handle 
    ->find('input[name=username]')
      ->val('Jon');
  $handle 
    ->find('input[name=password]')
      ->val('123456');
      ->parents('form')
        ->submit();
}
function success2($browser) {
  print $browser;
}

(请注意,这尚未经过测试,但应该可以使用)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读