SleepingOwl Apist is a small library which allows you to access any site in api-like style, based on html parsing.
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>"
}
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 can be found at sleeping owl apist.
View examples.
You can donate in BTC: 13k36pym383rEmsBSLyWfT3TxCQMN2Lekd
Apist was written by Sleeping Owl and is released under the MIT License. See the LICENSE file for details.