Работая над проектом сценария, я буквально потратил последние 4 часа на изучение всего, что я могу — моя голова буквально больше не работает по этому вопросу и действительно нуждается в вашей помощи.
Итак, у меня есть скрипт PHP cURL, который получает данные с веб-сайта. Я могу взять div, у которых есть ID и все такое. Но как я могу получить конкретный текст из DIV, у которого нет идентификатора / класса / или чего-то другого, кроме факта, что это единственный жирный элемент в div?
Вот текст HTML на веб-сайте:
<div class="firststyle"><label for="calculator" class="class-coll-1">
<p class="sr-only">Welcome to the calculator:</p> <b>What is one plus two?</b> </label></div>
То, что я пытаюсь разобрать / извлечь из этой части HTML, это просто текст «Что такое один плюс два?».
Как определить эту конкретную часть, которая будет выбрана?
Единственное, что я могу сейчас сделать, — это проанализировать весь div с помощью следующего скрипта:
$html = str_get_html($response);
$the_question = $html->find('div[class=firststyle]');
Однако при этом получается весь текст, включая ярлык «Добро пожаловать в калькулятор», который мне не нужен.
Возможно ли будет каким-то образом сохранить проанализированные данные в переменную, а затем перейти к этому, используя другой скрипт для извлечения данных из этой переменной?
Или, может быть, я могу сделать что-то вроде:
Найти div с этим идентификатором -> найти жирный текст внутри него
Или, может быть:
Найти div с ID -> вынуть текст «Добро пожаловать в калькулятор»
echo $html->find('.firststyle b', 0)->innertext;
#=> What is one plus two?
Если у вас есть HTML-код с веб-сайта, вы можете использовать класс DOMDocument для его анализа.
$html = file_get_contents('http://www.example.com');
$dom = new DOMDocument();
$dom->loadHTML($html);
Класс DOMDocument поставляется с множеством методов. Это те, которые вам понадобятся getElementById
а также getElementsByTagName
,
Что-то вроде этого:
$html = '<div id="test"><b>I want to be found!</b></div><div id="poep"><b>Im not selected</b></div>';
$dom = new DOMDocument();
$dom->loadHTML($html);
$div = $dom->getElementById('test');
$text = $div->getElementsByTagName('b')->item(0)->nodeValue;
echo $text;
Будет выводить:
I want to be found!