sleeping-owl / apist
Package to provide api-like access to foreign sites based on html parsing
Installs: 4 712
Dependents: 1
Suggesters: 0
Security: 0
Stars: 310
Watchers: 21
Forks: 39
Open Issues: 3
Language:HTML
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: 5.*
- symfony/css-selector: ~2.0
- symfony/dom-crawler: ~2.0
- symfony/yaml: ~2.0
Requires (Dev)
- mockery/mockery: 0.*
- phpunit/phpunit: 4.*
README
SleepingOwl Apist is a small library which allows you to access any site in api-like style, based on html parsing.
Overview
This package allows you to write method like this:
class WikiApi extends Apist { public function getBaseUrl() { return 'http://en.wikipedia.org'; } public function index() { return $this->get('/wiki/Main_Page', [ 'welcome_message' => Apist::filter('#mp-topbanner div:first')->text()->mb_substr(0, -1), 'portals' => Apist::filter('a[title^="Portal:"]')->each([ 'link' => Apist::current()->attr('href')->call(function ($href) { return $this->getBaseUrl() . $href; }), 'label' => Apist::current()->text() ]), 'languages' => Apist::filter('#p-lang li a[title]')->each([ 'label' => Apist::current()->text(), 'lang' => Apist::current()->attr('title'), 'link' => Apist::current()->attr('href')->call(function ($href) { return 'http:' . $href; }) ]), 'sister_projects' => Apist::filter('#mp-sister b a')->each()->text(), 'featured_article' => Apist::filter('#mp-tfa')->html() ]); } }
and get the following result:
{ "welcome_message": "Welcome to Wikipedia", "portals": [ { "link": "http:\/\/en.wikipedia.org\/wiki\/Portal:Arts", "label": "Arts" }, { "link": "http:\/\/en.wikipedia.org\/wiki\/Portal:Biography", "label": "Biography" }, ... ], "languages": [ { "label": "Simple English", "lang": "Simple English", "link": "http:\/\/simple.wikipedia.org\/wiki\/" }, { "label": "العربية", "lang": "Arabic", "link": "http:\/\/ar.wikipedia.org\/wiki\/" }, { "label": "Bahasa Indonesia", "lang": "Indonesian", "link": "http:\/\/id.wikipedia.org\/wiki\/" }, ... ], "sister_projects": [ "Commons", "MediaWiki", ... ], "featured_article": "<div style=\"float: left; margin: 0.5em 0.9em 0.4em 0em;\">...<\/div>" }
Installation
Require this package in your composer.json and run composer update (or run composer require sleeping-owl/apist:1.x
directly):
"sleeping-owl/apist": "1.*"
Documentation
Documentation can be found at sleeping owl apist.
Examples
View examples.
Support Library
You can donate via PayPal, Yandex money (410012943296949) or in BTC: 13k36pym383rEmsBSLyWfT3TxCQMN2Lekd
Copyright and License
Apist was written by Sleeping Owl and is released under the MIT License. See the LICENSE file for details.