client = $client; $this->crawler = $crawler; } public function search(string $keyword): array { $this->searchUrl = $this->baseUrl . trim($keyword); $this->crawler->add($this->getContent()); $this->getItems()->addActionLinks(null); return ['title' => $this->getTableTitles(), 'row' => $this->getRows()]; } public function setContent($content) { $this->content = $content; } public function getContent() { if ($this->content) { return $this->content; } $response = $this->client->request('GET', $this->searchUrl); return $response->getContent(); } public function parse() { $data = $this->crawler->filter("#searchResult tr")->each(function ($node, $i) { if ($node->getNode(0)) { try { $title = $node->filter("a.detLink")->text(); $info = $node->filter("font.detDesc")->text(); $numSeeders = $node->filter("td:nth-child(3)")->text(); $magnetLink = $node->filter("td:nth-child(2) > a:nth-child(2)")->attr("href"); $parts = explode(',', $info); $info = $parts[0] . "-" . $parts[1]; return ['title' => $title, 'data-link' => $magnetLink, 'seeders' => $numSeeders, 'info' => $info]; } catch (\Exception $e) { //echo $e->getMessage(); } } }); return $data; } public function getItems() { $this->rows = $this->parse(); return $this; } }