2009-10-29 8 views
8

私はウェブページをスクラップして、すべてのクッキーを気にかけ、フォームをデフォルト値で事前入力することができるPHPライブラリを探しています。PHP用のスクレイピングライブラリ - phpQuery?

私はすべての入力要素をxpathにマッチさせることに飽き飽きしています。もし何か存在すれば、私は大好きです。私はphpQueryに出くわしましたが、マニュアルはあまり明確ではなく、POST要求の作成方法がわかりません。

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

@ジョナサン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:安心して、これはで、はスパム送信に使用されません。

+2

+1答えはありませんが、他の人にお待ちしています。 – Andrew

+0

マニュアルがわからない場合は、ソースコード –

+1

を読んでみてください。最近、人生はスパマーにとってかなり難しいです。 –

答えて

2

http://code.google.com/p/phpquery/wiki/Ajax特に参照:

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

及びオブジェクトまたは文字列であるとしてデータパラメータを定義

# data Object, String。 POSTリクエスト例えば、クエリ文字列の形式を使用して可能べきである。(ドキュメントは、jQueryのサイトに直接リンク - http://docs.jquery.com/Ajax/jQuery.post

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

phpQueryは、jQueryのポートであるとして、メソッドのシグネチャが同じである

編集

2つのこと:あなたのnを満たす可能性があるphpQuery::browserPost機能もあり

より良いeeds。

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

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

(これはテストされていないが、作業する必要があることに注意してください)

+0

私の更新を確認してください。 –

1

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

0

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

HTTPリクエストを処理する場合は、例を参照してください。 Httpful,Unirest,RequestsまたはGuzzleである。最近、Guzzleが人気を集めていますが、結局のところ、あなたに最も適したライブラリは、依然として個人的な好みの問題です。

HTMLファイルを解析するには、自分で書いたライブラリDOM-Queryをお勧めします。 (1)HTMLファイルをロードし、(2)フロントエンドアプリケーションでjQueryを使用する場合と同じように、HTMLの一部を選択または変更することができます。

関連する問題