osoobe/dubizzle

v1.2.2 2015-11-14 16:42 UTC

This package is not auto-updated.

Last update: 2024-04-27 15:53:01 UTC


README

Dubizzle is an online classifieds website. This project aims to become a simple and complete PHP scraping-based API for Dubizzle.

This project was enspired by python's Dubizzle scraping API.

Notice

This is still a work in progress. There is much left to do until this becomes what it should be. I will however make sure that the master branch functions as expected. Any help would be greatly appreciated, obviously.

Another thing to point out is that the main focus for the time being is on Dubizzle UAE and specifically Motors search within it.

Prerequisites

Installation

To easily install Dubizzle, simply:

composer require osoobe/dubizzle

If you don't have compose install, see how to install and use composer

Quickstart

use Dubizzle\Search;

$params = ["country"=>'uae', "city"=>"dubai", "section"=>"motor"];
$uea = new Search($params);
$query = $uea->search();
$query->fetch();

$results = $query->get_results();

The $results variable is a array of associated data for each result item on dubizzle:

var_dump($results);

[
    ['title' => '...',
     'location' => '...',
     'url' => '...',
     'price' => '...',
     'category' => '...'
    ],
    ['title' => '...',
     'location' => '...',
     'url' => '...',
     'price' => '...',
     'category' => '...'
    ],
    ...
]

See Demo 1 for data output.

Example

Find average price of year 2007 and above Nissan Altimas in Dubai (Live Demo)

require_once "../vendor/autoload.php";

use Dubizzle\Search;

$params = [
    "keyword"=>'altima',
    "country"=>'uae',
    "city"=>'dubai',
    "section"=>'motors',
    "category"=>'cars',
    "make"=>'nissan',
    "min_year"=>2007,
    "num_results"=>'all'];

$uae = new Search($params);

$query = $uae->search();
$query->fetch();
$results = $query->get_results();

$result_count = count($results);
$total_price = 0;
foreach($results as $result){
    $total_price += $result["price"];
}

echo "Num. Results:   ".$result_count;
echo "<br/>";
echo "<br/>";
echo "Average price:  ".(intval($total_price / $result_count)); # Prints 39239.94

Other Examples

Get the list of makes from [Dubizzle] (Live Demo):

use Dubizzle\Category;

$category = new Category();
$makes = $category->get_makes(Category::$uae["categories"]["options"]['cars']);

Get the list of models from [Dubizzle] (Live Demo):

use Dubizzle\Category;

$category = new Category();
$models = $category->get_models(Category::$uae["makes"]["options"]['audi']);

Search Parameters

General

  • country - string; defaults to 'uae'
  • keyword - string
  • city - string
  • section - string
  • min_price and max_price - integers
  • category - string
  • added_days - choices are 0, 3, 7, 14, 30, 90, or 180
  • num_results - integer; 'all' fetches all results available
  • detailed (not implemented) - if set to True, fetches full listing data for each result; slower, obviously

Motors

  • make - a long list can be found in regions.py
  • min_year and max_year - integers
  • min_kms and max_kms - integers
  • seller - 'dealer' or 'owner'
  • fuel - 'gasoline', 'hybrid', 'diesel', or 'electric'
  • cylinders - 3, 4, 5, 6, 8, 10, or 12
  • transmission - 'automatic' or 'manual'

Listing Parameters

  • url - string, required
  • country - string; defaults to 'uae'

Issues

Please use the Issues page for that.