PHP için Kütüphane kazıma - phpQuery?

2 Cevap php

Bana web sayfalarını hurda sağlar ve tüm çerezleri hakkında ilgilenir ve varsayılan değerlerle formları doldurulmasına bir PHP kitaplığı için arıyorum, o beni en çok rahatsız ediyor ne.

Ben XPath ile her giriş elemanı maç ve daha iyi bir şey var eğer ben isterim sahip yoruldum. I phpQuery geldim ama manuel çok açık değildir ve ben POST isteklerini yapmak nasıl bulamıyor.

Birisi bana yardımcı olabilir misiniz? Teşekkürler.

@Jonathan Fingland:

BrowserGet için kılavuzun tarafından sağlanan örnek () biz var:

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

Ben tüm diğer alanlar hurdaya varsayalım ve geri GET isteği göndermek, ben phpQuery :: browserPost () metodu ile aynı yapmak istiyorum ama bunu nasıl bilmiyorum. Ben kazımak için çalışıyorum formu belirteç bir girişi vardır ve phpQuery belirteci kazımak için yeterince akıllı olmak ve sadece bana POST her şeyi aracılığıyla submiting, (bu durumda kullanıcı adı ve şifre) diğer alanlarını değiştirmek izin verirsen ben isterim.

PS: Emin, bu not küfrettiği için kullanılır olacak.

2 Cevap

http://code.google.com/p/phpquery/wiki/Ajax ve özellikle bakınız:

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

ve

# data Object, String hangi bir nesne ya da bir dize ya olarak veri parametresini tanımlar. POST istekleri should sorgu dizesi biçimi kullanan, örneğin mümkün:

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

phpQuery bir jQuery liman olarak yöntem imzası (- http://docs.jquery.com/Ajax/jQuery.post docs jquery sitesine doğrudan bağlantı) aynı

Edit

İki şey:

Ihtiyaçlarınızı daha iyi karşılamak olabilecek bir phpQuery::browserPost fonksiyonu da vardır.

Ancak, sen önce bu form tüm alanları doldurun böylece success2 arama sadece submit() veya click() yöntemleri denir unutmayın.

örneğin

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

(Bu test edilmediğini unutmayın, ama should çalışmak)

I SimpleTest's ScriptableBrowser Geçmişte bu tür şeyler için kullandım. Bu SimpleTest test çerçevenin bir parçası, ama sen tek başına kullanabilirsiniz.