Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- require 'vendor/autoload.php';
- use Symfony\Component\DomCrawler\Crawler;
- use Symfony\Component\CssSelector\CssSelectorConverter;
- $url = 'https://www.gamerankings.com/browse.html?site=n64&sort=2&numrev=3&letter=A';
- $data = file_get_contents($url);
- $crawler = new Crawler($data);
- $chunks = $crawler->filter('div#content')->filter('div.body')->filter('tr');
- $processed = $chunks->each(function($data){
- return processTR( $data->html() );
- });
- print_r($processed);
- function processTR($trhtml){
- $data = new Crawler($trhtml);
- $tds = $data->filter('td')->each(function($d){
- return $d->html();
- });
- return composeLiteral(
- imageURL($tds[0]),
- console($tds[1]),
- developerYearTitle($tds[2]),
- aggregateScore($tds[3])
- );
- }
- function composeLiteral(...$args){
- $return = [];
- foreach($args as $k => $v){
- foreach($v as $k2 => $v2){
- $return[$k2] = $v2;
- }
- }
- return $return;
- }
- function imageURL($tdhtml){
- $cr = new Crawler($tdhtml);
- return ['imageurl' => $cr->filter('img')->attr('src')];
- }
- function console($tdhtml){
- $cr = new Crawler($tdhtml);
- return ['platform' => $cr->text()];
- }
- function developerYearTitle($tdhtml){ //this gets the url page, the title, the year, the developer
- $cr = new Crawler($tdhtml);
- $urltogame = $cr->filter('a')->attr('href');
- $devyear = $cr->text();
- $parts = explode(PHP_EOL,$devyear);
- $gamename = $parts[0];
- $parts = explode(',',$parts[1]);
- $dev = $parts[0] ?? 'n/a';
- $year = $parts[1] ?? 'n/a';
- return [
- 'gamerankingsurl' => 'https://www.gamerankings.com' . $urltogame,
- 'gamename' => $gamename,
- 'dev' => trim($dev),
- 'year' => $year
- ];
- }
- function aggregateScore($tdhtml){
- $cr = new Crawler($tdhtml);
- $pieces = explode('%',$cr->text());
- return [
- 'averagescore' => $pieces[0] == 'n/aNo Reviews' ? 'n/a' : $pieces[0] . '%',
- 'reviewcount' => $pieces[1] ?? 'n/a'
- ];
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement