iamsalnikov / crwl
crwl.ru 的 API 实现
Requires
- bca/curl: *
Requires (Dev)
- codeception/codeception: ~2.0
This package is not auto-updated.
Last update: 2024-09-24 03:44:04 UTC
README
- 描述
- 安装
- 使用
- 获取广告列表
- 获取广告
- 错误处理
- 测试
描述
包 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\AdsQuery
和 iamsalnikov\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\AdsQuery
和 iamsalnikov\crwl\AdQuery
类的 get()
方法将返回 false
。
要获取错误代码和错误文本,请调用 getErrorCode()
和 getErrorMessage()
方法,这两个方法都属于 iamsalnikov\crwl\AdsQuery
和 iamsalnikov\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