首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为phpQuery抓取库?

为phpQuery抓取库?
EN

Stack Overflow用户
提问于 2009-10-29 15:46:00
回答 3查看 5.1K关注 0票数 8

我正在寻找一个PHP库,它允许我废弃网页,处理所有的cookie,并用默认值预填充表单,这是最让我恼火的。

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

有人能帮我吗?谢谢。

@Jonathan:

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

代码语言:javascript
复制
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:请放心,这是而不是将用于垃圾邮件。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-10-29 16:00:19

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

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

# data Object, String,它将数据参数定义为对象或字符串。应该可以使用查询字符串格式发布请求,例如:

代码语言:javascript
复制
$data = "username=Jon&password=123456";
$url = "http://www.mysite.com/login.php";
phpQuery::post($url, $data, $callback, $type)

由于phpQuery是一个jQuery端口,所以方法签名是相同的(文档链接直接指向jquery - http://docs.jquery.com/Ajax/jQuery.post)。

编辑

有两件事:

还有一个phpQuery::browserPost函数可以更好地满足您的需要。

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

例如:

代码语言:javascript
复制
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;
}

(请注意,这还没有经过测试,但应该有效)

票数 2
EN

Stack Overflow用户

发布于 2009-10-29 20:12:59

我以前用过简单测试的ScriptableBrowser来做这样的事情。它是SimpleTest测试框架的一部分,但是您可以单独使用它。

票数 1
EN

Stack Overflow用户

发布于 2016-01-14 01:13:15

我将使用一个专用库来解析HTML文件,并使用一个专用库来处理HTTP请求。同时使用同一个库似乎是个坏主意,海事组织。

要处理HTTP请求,请查看例如。哈普尤内斯特请求口香糖。口香糖现在特别流行,但最终,无论哪个图书馆最适合你,都是个人品味的问题。

对于解析HTML文件,我推荐一个我自己编写的库:DOM查询。它允许您(1)加载一个HTML文件,然后(2)选择或更改HTML的部分内容,就像在前端应用程序中使用jQuery一样。

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

https://stackoverflow.com/questions/1644669

复制
相关文章

相似问题

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