Для парсинга страниц на php, можно использовать DOMXPath .
Несколько примеров использования DOMXPath на PHP
- Получение списка элементов по имени тега:
1 2 3 4 5 6 7 8 9 10 11 12 |
$html = '<div><p>Paragraph 1</p><p>Paragraph 2</p></div>'; $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $paragraphs = $xpath->query('//p'); foreach ($paragraphs as $p) { echo $p->nodeValue . "\n"; } |
Этот пример загружает HTML-код, содержащий два элемента <p>
, и получает все элементы <p>
с помощью выражения XPath //p
. Затем он проходит по списку найденных элементов и выводит их текстовое содержимое.
- Получение элемента по id:
1 2 3 4 5 6 7 8 9 10 |
$html = '<div><p id="my-paragraph">Hello, world!</p></div>'; $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $paragraph = $xpath->query('//*[@id="my-paragraph"]')->item(0); echo $paragraph->nodeValue . "\n"; |
В этом примере мы загружаем HTML-код, содержащий элемент <p>
с идентификатором “my-paragraph”, и получаем его с помощью выражения XPath //*[@id="my-paragraph"]
. Затем мы выводим его текстовое содержимое.
- Получение списка элементов по классу:
1 2 3 4 5 6 7 8 9 10 11 12 |
$html = '<div><p class="my-class">Paragraph 1</p><p class="my-class">Paragraph 2</p></div>'; $doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $paragraphs = $xpath->query('//*[@class="my-class"]'); foreach ($paragraphs as $p) { echo $p->nodeValue . "\n"; } |
Этот пример загружает HTML-код, содержащий два элемента <p>
с классом “my-class”, и получает все элементы с классом “my-class” с помощью выражения XPath //*[@class="my-class"]
. Затем он проходит по списку найденных элементов и выводит их текстовое содержимое.
- Получение всех изображений на странице:
1 2 3 4 5 6 7 8 9 10 11 12 |
$doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $imageElements = $xpath->query('//img'); foreach ($imageElements as $imageElement) { $src = $imageElement->getAttribute('src'); echo $src . PHP_EOL; } |
- Получение всех ссылок на странице:
1 2 3 4 5 6 7 8 9 10 11 12 |
$doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $linkElements = $xpath->query('//a'); foreach ($linkElements as $linkElement) { $href = $linkElement->getAttribute('href'); echo $href . PHP_EOL; } |
- Получение текста элемента:
1 2 3 4 5 6 7 8 9 10 |
$doc = new DOMDocument(); $doc->loadHTML($html); $xpath = new DOMXPath($doc); $element = $xpath->query('//div[@class="myClass"]')->item(0); $text = $element->textContent; echo $text; |
В этих примерах мы использовали различные методы для получения элементов на странице, например, query()
, getAttribute()
и textContent
. Они могут быть комбинированы в различных способах для получения нужных данных из HTML-кода страницы.