Home

Awesome

Queliwrap.

Queliwrap is a wrapper that provides easy helper functions around PHP popular web scrapper, QueryList and Guzwrap.

Notice: Queliwrap\Wrapper\Queliwrap::exec() method has been replaced with execute(). exec() now returns psr-7 compliant object while execute() returns QueryList object.

Installation

Make sure you have Composer installed.

composer require ahmard/queliwrap

After installation is done, require Composer's autoloader in your code:

require 'vendor/autoload.php';

Usage

Queliwrap relies on Guzwrap, you might want to dig a little deeper in to it.

use Queliwrap\Client;

Client::get('https://google.com')->execute()
    ->find('ul')->eq(0)
    ->find('li');

Handle errors

use Queliwrap\Client;

try {
    $text = Client::get('https://google.com')->execute()
        ->find('ul')->eq(0)
        ->find('li')
        ->text();
        
    echo $text;
}catch (Throwable $exception){
    echo $exception->getMessage();
}

Submit Form

use Guzwrap\Wrapper\Form;
use Queliwrap\Client;

Client::post(function(Form $form){
    $form->action('http://localhost:8080/rand/guzwrap.php');
    $form->field('name', 'Jane Doe');
    $form->file('image', 'C:\1.jpg');
});

Cookies

Thanks to Guzwrap cookies can be preserved across multiple requests

use Guzwrap\Wrapper\Form;
use Queliwrap\Client;

//Login
Client::create()
    ->referer('http://localhost:8000')
    ->withSharedCookie()
    ->form(function (Form $form){
        $form->action('http://localhost:8000/login');
        $form->method('POST');
        $form->input('email', 'queliwrap@example.com');
        $form->input('password', 1234);
        $form->input('remember_me', 1);
    })->exec();

//View user profile
$queryList = Client::create()
    ->get('http://localhost:8000/users/view')
    ->query(['id' => 2])
    ->withSharedCookie()
    ->execute();

//Find user info
$firstName = $queryList->find('.profile')
    ->find('list-group-item')
    ->eq(0)
    ->text();

echo "First name: {$firstName}";

Documentations

Licence

Queliwrap is MIT licenced.