Я пытаюсь получить цены в качестве продукта Amazon. Я попробовал 2 метод:PHP/соскоб - Получить цену амазонки продукта
file_get_contents
-> регулярного выражение ->это работает.- используя DOMXPath ->нет работа по причине.
Я заметил, что если Javascript включен XPath цены отличается от XPath, а Javascript отключен.
В любом случае, как я могу получить цену, используя xpath?
Это то, что я делаю, но код не возвращает ничего (даже если он работает на любом другом сайте):
(The XPath был сделан с использованием поджигателя)
$url = 'http://www.amazon.com/dp/product/B00TRQPSXM/';
$path = '/html/body/div[3]/form/table[3]/tbody/tr[1]/td/div/table/tbody/tr[2]';
$html = file_get_contents($url);
$dom = new DOMDocument();
@$dom->loadHTML($html);
$xpath = new DOMXpath($dom);
$elements = $xpath->query($path);
if($elements)
{
foreach($elements as $element)
{
echo $element->nodeName.'<br>';
echo $element->nodeValue.'<br>';
}
}
Вы имеете дело с внешним ресурсом. никогда не предполагайте успеха. ВСЕГДА убедитесь, что f_g_c() фактически вернул полезный html. и не используйте '@' для подавления ошибок. это кодирующий эквивалент наложения ваших пальцев в уши и движение «lalalalala не слышит вас». –
Как писал MarcB, это * плохая идея * (tm) задаться вопросом, почему 'dom-> loadHTML ($ html);' не работает, когда вы подавляете ошибки с ним. Веб-сайты Amazon обычно известны недействительным HTML, поэтому вам может потребоваться некоторое исправление/восстановление с ним. http://php.net/tidy/http://php.net/class.domdocument#domdocument.props.recover – hakre