Как извлечь HTML, используя XPath, как YQL, используя php?

Я использую YQL (https://developer.yahoo.com/yql/) но для каждого приложения (определяется вашим ключом доступа): 100 000 вызовов в день и для каждого IP-адреса: / v1 / public /: 2000 звонков в час; / V1 / YQL /: 20 000 звонков в час.

Мне нужен неограниченный запрос. Как извлечь HTML, используя XPath, как YQL, используя php.

$homepage = file_get_contents('https://google.com');
$dom = new DOMDocument();
$dom->loadHTML($homepage);

$xpath = new DOMXPath($dom);
$result = '';
foreach($xpath->evaluate('div') as $childNode) {
$result .= $dom->saveHtml($childNode);
}
var_dump($result);

Я только что нашел этот пример из Интернета, но не работает.

редактировать

    $homepage = file_get_contents('https://google.com');
$dom = new DOMDocument();
$dom->loadHTML($homepage);

$xpath = new DOMXPath($dom);
$result = '';
foreach($xpath->query('//a[@class="touch"]') as $childNode) {

// if output <a class="touch" href="url"><span alt="demo1" title="title2">Content</span> some</a> , How to get href/url and child tag span  attribute alt/title ?

$result .= $dom->saveHtml($childNode);
}
var_dump($result);

Если возможно, то как извлечь полный HTML в json / xml, как yql, используя php?

1

Решение

Существует несколько способов дальнейшей обработки, один из которых — выполнение другого запроса. Чтобы получить узел span, используйте можно использовать этот запрос:

$span = $xpath->query('./span', $childNode); // all spans
$span->item(0)->attributes->getNamedItem("alt")->nodeValue; // first span

То, что вы делаете, это поиск в данном узле.

постскриптум не используйте свойство attribute в качестве массива (attribute [«attributeName»]), поскольку оно не работает в некоторых версиях PHP.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]