I do a fair amount of scraping in Laravel, and it always splits into two worlds. Guzzle for the pages that are just HTML, and a mess of Puppeteer scripts shelled out from PHP for the ones that render in JavaScript. Two toolchains, two mental models, glue in between.
Source: [Dev.to](https://dev.to/edulazaro/larascraper-a-web-scraper-for-laravel-5dkk)