Здравствуйте! Пытаюсь разобраться в парсинге на
Laravel используя
Symphony DomCrawler и прошу помощи разобраться. Изучая мануал, не все понятно и погуглив наткнулся на одну статью, уже не существующего сайта, но частично получив доступ через сохраненную копию
яндекса.
Пример кода:
/**
* Get content from html.
*
* @param $parser object parser settings
* @param $link string link to html page
*
* @return array with parsing data
* @throws \Exception
*/
public function getContent($parser, $link)
{
// Get html remote text.
$html = file_get_contents($link);
// Create new instance for parser.
$crawler = new Crawler(null, $link);
$crawler->addHtmlContent($html, 'UTF-8');
// Get title text.
$title = $crawler->filter($parser->settings->title)->text();
// If exist settings for teaser.
if (!empty(trim($parser->settings->teaser))) {
$teaser = $crawler->filter($parser->settings->teaser)->text();
}
// Get images from page.
$images = $crawler->filter($parser->settings->image)->each(function (Crawler $node, $i) {
return $node->image()->getUri();
});
// Get body text.
$bodies = $crawler->filter($parser->settings->body)->each(function (Crawler $node, $i) {
return $node->html();
});
$content = [
'link' => $link,
'title' => $title,
'images' => $images,
'teaser' => strip_tags($teaser),
'body' => $body
];
return $content;
}
И не понятна тут строка
$parser, которую принимает метод
getContent().
Что она должны содержать? Из метода видно, что она используется например как
$parser->settings->teaser, и содержит селектор для поиска, но как создан этот объект?
В общем, прошу помощи, кто знает, кто пользуется данным способом.
Всем большое спасибо, заранее за ответы!