8

私は、Webページを廃棄し、すべてのCookieを処理し、フォームにデフォルト値を事前入力できるPHPライブラリを探しています。これが、私にとって最も厄介なことです。

すべての入力要素をxpathと一致させる必要があることにうんざりしているので、もっと良いものがあればいいのにと思います。phpQueryに出くわしましたが、マニュアルがあまり明確ではなく、POSTリクエストを行う方法がわかりません。

誰かが私を助けることができますか?ありがとう。

@ジョナサンフィングランド:

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:ご安心ください。これはスパムには使用されません。

4

3 に答える 3

2

http://code.google.com/p/phpquery/wiki/Ajax、特に以下を参照してください。

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

# data Object, Stringこれは、データパラメータをオブジェクトまたは文字列として定義します。POST要求は、クエリ文字列形式を使用して可能である必要があります。例:

$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

編集

2つのこと:

phpQuery::browserPostあなたのニーズをよりよく満たすかもしれない機能もあります。

ただし、success2コールバックはsubmit()orclick()メソッドでのみ呼び出されるため、その前にすべてのフォームフィールドに入力できることにも注意してください。

例えば

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;
}

(これはテストされていませんが、機能するはずです)

于 2009-10-29T16:00:19.813 に答える
1

私は過去にそのようなものにSimpleTestのScriptableBrowserを使用しました。SimpleTestテストフレームワークの一部ですが、スタンドアロンで使用できます。

于 2009-10-29T20:12:59.590 に答える
0

HTMLファイルを解析するための専用ライブラリとHTTPリクエストを処理するための専用ライブラリを使用します。両方に同じライブラリを使用するのは悪い考えのようです、IMO。

HTTPリクエストの処理については、たとえばを確認してください。Httpful、、、または。Unirest_ Guzzleは最近特に人気がありますが、結局のところ、どちらのライブラリが最適かは個人的な好みの問題です。RequestsGuzzle

HTMLファイルを解析するには、自分で作成したライブラリをお勧めします:DOM-Query。これにより、(1)HTMLファイルをロードしてから、(2)フロントエンドアプリでjQueryを使用する場合とほぼ同じ方法で、HTMLの一部を選択または変更できます。

于 2016-01-14T01:13:15.583 に答える