[ ], ]; public function collectData() { if ($this->queriedContext === 'USENIX ;login:') { $this->collectLoginOnlineItems(); return; } returnClientError('Illegal Context'); } private function collectLoginOnlineItems(): void { $url = 'https://www.usenix.org/publications/loginonline'; $dom = getSimpleHTMLDOMCached($url); $items = $dom->find('div.view-content > div'); foreach ($items as $item) { $title = $item->find('.views-field-title > span', 0); $author = $item->find('.views-field-pseudo-author-list > span.field-content', 0); $relativeUrl = $item->find('.views-field-nothing-1 > span > a', 0); $uri = sprintf('https://www.usenix.org%s', $relativeUrl->href); // June 2, 2022 $createdAt = $item->find('div.views-field-field-lv2-publication-date > div > span', 0); $item = [ 'title' => $title->innertext, 'author' => strstr($author->plaintext, ',', true) ?: $author->plaintext, 'uri' => $uri, 'timestamp' => $createdAt->innertext, ]; $this->items[] = array_merge($item, $this->getItemContent($uri)); } } private function getItemContent(string $uri) : array { $html = getSimpleHTMLDOMCached($uri); $content = $html->find('.paragraphs-items-full', 0)->innertext; $extra = $html->find('fieldset', 0); if (!empty($extra)) { $content .= $extra->innertext; } $tags = []; foreach($html->find('.field-name-field-lv2-tags div.field-item') as $tag) { $tags[] = $tag->plaintext; } return [ 'content' => $content, 'categories' => $tags ]; } }