Делаю парсер который из https://habrahabr.ru будет парсить последний пост в каждом из самостоятельно заданных хабов.
Ошибка :
Trying to get property of non-object in C:\xampp\htdocs\Parser\class.php on line 44
Это класс использующийся для этого:
class Parser {
public $hubs = array(
'infosecurity'=>"https://habrahabr.ru/hub/infosecurity/",
'programming' =>"https://habrahabr.ru/hub/programming/",
'webdev'=>"https://habrahabr.ru/hub/webdev/",
'linux'=>"https://habrahabr.ru/hub/linux/",
'algorithms'=>"https://habrahabr.ru/hub/algorithms/"
);
public $links = array(
'infosecurity' => "",
'programming' => "",
'webdev' => "",
'linux' => "",
'algorithms' =>""
);
public $headers = array(
'infosecurity' => "",
'programming' => "",
'webdev' => "",
'linux' => "",
'algorithms' =>""
);
public $texts = array(
'infosecurity' => "",
'programming' => "",
'webdev' => "",
'linux' => "",
'algorithms' =>""
);
//функция принимает аргументы страницу и тэг(класс), тип возвр значения и возвращает содержимое тэга
public function get_article_link($page_link, $tag, $type) {
$html = get_curl($page_link);//получаем html
$dom = str_get_html($html);// создает для каждого тэга свой обьект
$article = $dom->find($tag);//ссылка на статью
return $article[0]->$type.'<br>';
}
public function get_content($page_link, $tag, $type) {
$html = get_curl($page_link);//получаем html
$dom = str_get_html($html);// создает для каждого тэга свой обьект
$article = $dom->find($tag);//ссылка на статью
//var_dump($article);
return $article[0]->$type.'<br>'; // строка ошибки
}
}
При обращении к методам класса и передачи им параметра ссылки на статьи возникает упомянутая ошибка
foreach ($Habr->links as $key => $value) {
// Обрезаем содержимое до первого "/" чтобы получить заголовок
//
$title = $Habr ->get_content($Habr->links["$key"], 'title', 'plaintext');
$str = strpos($title, "/");
$title = substr($title, 0, $str);
$Habr->headers[$key] = $title;
//Выводим заголовок
echo "<br><b>TITLE : </b><br>".$title."<br>";
//выводим текст статьи
$text = $Habr ->get_content($Habr->links[$key], '.post__text', 'plaintext');
$Habr->texts[$key] = $text;
echo "<b>TEXT OF PAGE:<br></b>".$Habr->texts[$key]."<br>";
}
Ошибка в выражении $Habr->links[$key]
, потому что если вместо него подставить ссылку в виде строки ошибки не будет.
Результат var_dump($Habr->links)
:
array(5) {
["infosecurity"]=> string(55) "https://habrahabr.ru/company/kaspersky/blog/348572/ "
["programming"]=> string(37) "https://habrahabr.ru/post/348656/ "
["webdev"]=> string(52) "https://habrahabr.ru/company/skyeng/blog/348606/ "
["linux"]=> string(51) "https://habrahabr.ru/company/flant/blog/348324/ "
["algorithms"]=> string(37) "https://habrahabr.ru/post/348530/ "
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
При клике по кнопке на сайте должна происходить подгрузка дополнительного контентаAJAX запрос ниже:
Пытаюсь использовать библиотеку FreeType (v2) для 2Д отрисовки в OpenGL (v41) сцене на языке C++