addHtmlContent($html); $crawler->filterXPath('//tr')->each(function (Crawler $tr) use (&$configurations) { $tableData = $tr->filterXPath('//td'); if ($tableData->count() === 0) { return; } $configurations[] = $this->fromTableData($tableData); }); return collect($configurations); } private function fromTableData(Crawler $tableData): MemoryConfiguration { return new MemoryConfiguration( type: $tableData->eq(0)->text('DDR4'), vendor: $tableData->eq(1)->text(), speed: (int)$tableData->eq(2)->text(0), supportedSpeed: (int)$tableData->eq(3)->text(0), moduleSizeHr: $tableData->eq(4)->text(), module: $tableData->eq(5)->text(), chip: $tableData->eq(6)->text(), isDualSided: $tableData->eq(7)->text() === 'DS', dimmSocketSupport: $tableData->eq(8)->text(), overclockingSupport: strtolower($tableData->eq(9)->text('')), note: $tableData->eq(10)->text() ); } }