Я использую 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?
Существует несколько способов дальнейшей обработки, один из которых — выполнение другого запроса. Чтобы получить узел span, используйте можно использовать этот запрос:
$span = $xpath->query('./span', $childNode); // all spans
$span->item(0)->attributes->getNamedItem("alt")->nodeValue; // first span
То, что вы делаете, это поиск в данном узле.
постскриптум не используйте свойство attribute в качестве массива (attribute [«attributeName»]), поскольку оно не работает в некоторых версиях PHP.
Других решений пока нет …