aportela / scraper-lyrics
自定义PHP歌词爬虫
1.0.7
2024-01-31 21:55 UTC
Requires
- php: >=8.1
- aportela/httprequest-wrapper: ^2.0
- psr/log: ^3.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^3.45
- phpstan/phpstan: ^1.10
- phpunit/phpunit: ^10.5
README
自定义PHP歌词爬虫
安装(Composer)依赖
composer require aportela/scraper-lyrics
警告
请合理使用,以防止源提供者修改或禁止此爬虫的操作。请将结果缓存到您自己的存储或数据库中,以避免重复相同的调用。同时,尽量避免每秒进行多次调用,这可能会被视为DDOS攻击。
代码示例
require "vendor/autoload.php";
$logger = new \Psr\Log\NullLogger("");
$lyrics = new \aportela\ScraperLyrics\Lyrics($logger);
/**
Search/Scrap on all providers
*/
if ($lyrics->scrap(
"Bohemian Rhapsody",
"Queen"
)) {
echo sprintf(
"<H1>Title: %s</h1><H2>Artist: %s</H2><H3>Source: %s</H3><PRE>%s</PRE>",
$lyrics->title,
$lyrics->artist,
$lyrics->source,
$lyrics->lyrics
);
}
/**
Search/Scrap on custom scrap providers
You can use this method if at some point in the future a provider stops working and you want to ignore scraping with him (which will give an error) in case you previously used the global (scrap) method
*/
if ($lyrics->scrap(
"Bohemian Rhapsody",
"Queen",
[
\aportela\ScraperLyrics\SourceProvider::SEARCH_ENGINE_DUCKDUCKGO,
\aportela\ScraperLyrics\SourceProvider::SEARCH_ENGINE_GOOGLE
]
)) {
echo sprintf(
"<H1>Title: %s</h1><H2>Artist: %s</H2><H3>Source: %s</H3><PRE>%s</PRE>",
$lyrics->title,
$lyrics->artist,
$lyrics->source,
$lyrics->lyrics
);
}
/**
Search/Scrap on custom source provider
Same as the previous one but for a single source provider
*/
if ($lyrics->scrapFromSourceProvider(
"Bohemian Rhapsody",
"Queen",
\aportela\ScraperLyrics\SourceProvider::SEARCH_ENGINE_DUCKDUCKGO
)) {
echo sprintf(
"<H1>Title: %s</h1><H2>Artist: %s</H2><H3>Source: %s</H3><PRE>%s</PRE>",
$lyrics->title,
$lyrics->artist,
$lyrics->source,
$lyrics->lyrics
);
}