2016-12-01 6 views
1

Я использую YQL (https://developer.yahoo.com/yql/), но на лимит приложения (идентифицированный вашим ключом доступа): 100 000 вызовов в день и на лимит IP:/v1/public/: 2 000 звонков в час;/v1/yql/: 20 000 звонков в час.Как извлечь HTML-код с помощью XPath, например, YQL, используя php?

Мне нужен неограниченный запрос. Как извлечь 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?

+0

Используйте $ xpath-> query() для извлечения нужных узлов. – Borna

+0

См. Обновленный Вопрос @Borna – hube

+0

Я ничего не вижу ^^ – Borna

ответ

0

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

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

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

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