PHP - Получение текста изнутри класса

1

Я пытаюсь собрать текст с веб-страницы с помощью PHP, так что, когда текст на этом веб-сайте обновляется, он также автоматически обновляется.

Возьмите сайт http://www.roblox.com/CW-Ultimate-Amethyst-Addiction-item?id=188004500, например - внутри класса robux-text, там фигура, robux-text R $ 20,003 - моя цель - получить текст от Roblox, на мой сайт.

Я попытался использовать этот код, но безрезультатно - мне предъявляются следующие ошибки:

Предупреждение: file_get_contents(): php_network_getaddresses: getaddrinfo не удалось: временный сбой при разрешении имени в /home/public_html/index.php в строке 9

Предупреждение: file_get_contents (http://www.roblox.com/CW-Ultimate-Amethyst-Addiction-item?id=188004500): не удалось открыть поток: php_network_getaddresses: getaddrinfo не удалось: временный сбой при разрешении имен в /home/public_html/index.php в строке 9

Предупреждение: DOMDocument :: loadHTML(): пустая строка, предоставленная в качестве входа в /home/public_html/index.php в строке 11

<?php
$html = file_get_contents("http://www.roblox.com/CW-Ultimate-Amethyst-Addiction-item?id=188004500");
$DOM = new DOMDocument();
$DOM->loadHTML($html);
$finder = new DomXPath($DOM);
$classname = 'robux-text';
$nodes = $finder->query("//*[contains(@class, '$classname')]");
foreach ($nodes as $node) {
  echo $node->nodeValue;
}
?>
  • 0
    Ваш код выглядит нормально, проблема, кажется, связана с разрешением доменного имени www.roblox.com
  • 0
    Есть ли решение по этому поводу?
Показать ещё 1 комментарий
Теги:

2 ответа

1
Лучший ответ

Похоже, что allow_url_fopen отключил вашу систему (php.ini), поэтому вы получаете ошибку.

Попробуйте с помощью curl:

<?php
libxml_use_internal_errors(true);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "http://www.roblox.com/CW-Ultimate-Amethyst-Addiction-item?id=188004500");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$html = curl_exec($ch);
curl_close($ch);

$DOM = new DOMDocument();
$DOM->loadHTML($html);
$finder = new DomXPath($DOM);
$classname = 'robux-text';
$nodes = $finder->query("//*[contains(@class, '$classname')]");
foreach ($nodes as $node) {
  echo $node->nodeValue;
}
?>
  • 0
    Спасибо, сначала я получал ошибки с этим кодом, но после добавления libxml_use_internal_errors (true); текст отображается, и ошибок нет. Большое спасибо!
  • 0
    хороший! Вы наконец-то получаете страницу html :) Это просто предупреждения, вы можете их спокойно игнорировать, я обновил свой ответ с помощью libxml_use_internal_errors(true);
Показать ещё 5 комментариев
0

Вы можете легко получить html-содержимое URL-адреса с помощью завитка. Вам просто нужно установить для параметра returntransfer значение true.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню