crwl.ru 的 API 实现

dev-master 2014-11-02 20:26 UTC

This package is not auto-updated.

Last update: 2024-09-24 03:44:04 UTC


README

Build Status License

  1. 描述
  2. 安装
  3. 使用
    • 获取广告列表
    • 获取广告
    • 错误处理
  4. 测试

描述

iamsalnikov/crwl 为操作简单的 crwl.ru API 提供了一种简单的方法。

<?php

// ...
use \iamsalnikov\crwl\Crwl;
use \iamsalnikov\crwl\Regions;
use \iamsalnikov\crwl\Sources;

$crwl = new Crwl("API_KEY");

// Получаем объявления для Москвы с сайта auto.ru
$ads = $crwl->ads()->region(Regions::MOSCOW)->source(Sources::AUTO_RU)->get();

// Получаем информацию по одному объявлению
$ad = $crwl->ad()->url("some_url_here")->get();

安装

包通过 Composer 安装。可以有两种安装方式。通过控制台安装包

composer require "iamsalnikov/crwl" "dev-master"

或者将一行添加到文件 composer.json

"iamsalnikov/crwl": "dev-master"

使用

第一步是创建 iamsalnikov\crwl\Crwl 类的对象。该类的构造函数接收 API 操作的密钥。

<?php

//...

use \iamsalnikov\crwl\Crwl;

$crwl = new Crwl("API_KEY");

为了操作广告,Crwl 类有两个方法:ads()ad()。这两个方法分别返回 iamsalnikov\crwl\AdsQueryiamsalnikov\crwl\AdQuery 类的查询对象。我们将进一步讨论这些对象的操作。

获取广告列表

如上所述,要获取广告列表,首先需要获取 iamsalnikov\crwl\AdsQuery 类的查询对象。这很简单

<?php

//...

use \iamsalnikov\crwl\Crwl;

$crwl = new Crwl("API_KEY");
$adsQuery = $crwl->ads();

iamsalnikov\crwl\AdsQuery 类有以下方法用于过滤广告

在过滤广告时,必须指定数据源。

所有这些方法都可以连接成链,因为它们都返回同一类的 iamsalnikov\crwl\AdsQuery 对象。

<?php

//...

use \iamsalnikov\crwl\Crwl;
use \iamsalnikov\crwl\Regions;
use \iamsalnikov\crwl\Sources;

$crwl = new Crwl("API_KEY");
$adsQuery = $crwl->ads();
$adsQuery->region(Regions::MOSCOW)->source(Sources::AUTO_RU);

// Можно сделать это короче
$adsQuery2 = $crwl->ads()->region(Regions::MOSCOW)->source(Sources::AUTO_RU);

要获取广告列表,需要调用 get() 方法

<?php

//...

use \iamsalnikov\crwl\Crwl;
use \iamsalnikov\crwl\Regions;
use \iamsalnikov\crwl\Sources;

$crwl = new Crwl("API_KEY");
$adsQuery = $crwl->ads();
$adsQuery->region(Regions::MOSCOW)->source(Sources::AUTO_RU);
$ads = $adsQuery->get();

// Можно сделать это короче
$ads2 = $crwl->ads()->region(Regions::MOSCOW)->source(Sources::AUTO_RU)->get();

get() 方法返回一个包含广告的数组。

获取广告

要获取广告,首先需要获取 iamsalnikov\crwl\AdQuery 类的查询对象

<?php

//...

use \iamsalnikov\crwl\Crwl;

$crwl = new Crwl("API_KEY");
$adQuery = $crwl->ads();

要指定获取哪个广告的信息,请使用接受广告地址作为输入的 url($url) 方法。该方法返回同一对象。

要获取广告,请使用返回该广告数据的 get() 方法

<?php

//...

use \iamsalnikov\crwl\Crwl;

$crwl = new Crwl("API_KEY");
$adQuery = $crwl->ad();
$adQuery->url("some_url_here");
$ad = $adQuery->get();

// Можно сделать это короче
$ad2 = $crwl->ad()->url("some_url_here")->get();

错误处理

如果发生错误,iamsalnikov\crwl\AdsQueryiamsalnikov\crwl\AdQuery 类的 get() 方法将返回 false

要获取错误代码和错误文本,请调用 getErrorCode()getErrorMessage() 方法,这两个方法都属于 iamsalnikov\crwl\AdsQueryiamsalnikov\crwl\AdQuery 类。

测试

包的测试位于 tests 文件夹中。为了开始测试,需要在文件 tests/crwl.suite.yml 中的 CrwlHelper 模块的设置中指定自己的 API 密钥。可以通过两个变量指定密钥

  • apiKey - 直接指定密钥
  • envVariable - 指定包含密钥的环境变量名称。如果设置了 envVariable 参数,则将忽略 apiKey 的值
class_name: CrwlTester
modules:
    enabled: [CrwlHelper, Asserts]
    config:
      CrwlHelper:
        apiKey: "YOUR_API_KEY"

之后可以运行测试。为此,请转到 tests 文件夹并运行 codeception。如果它全局安装了,可以使用以下命令

codecept run

如果没有全局安装,则在 tests 文件夹中,执行以下命令

../vendor/bin/codecept run