我想使用PHP在这个网页的菜单中抓取实际动态创建的URL:
http://groceries.iceland.co.uk/
我之前使用过类似的东西:
<?php
$baseurls = array("http://groceries.iceland.co.uk/");
foreach ($baseurls as $source)
{
$html = file_get_contents($source);
$start = strpos($html,'<nav id="mainNavigation"');
$end = strpos($html,'</nav>',$start);
$mainarea = substr($html,$start,$end-$start);
$dom = new DOMDocument();
@$dom->loadHTML($mainarea);
// grab all the urls on the page
$xpath = new DOMXPath($dom);
$hrefs = $xpath->evaluate("/html/body//a");
for ($i = 0; $i < $hrefs->length; $i++)
{
$href = $hrefs->item($i);
$url = $href->getAttribute('href');
}
}
?>
但它没有完成这个特定页面的工作。例如,我的代码返回一个url,例如:
groceries.iceland.co.uk//frozen-chips-and-potato-products
但我希望它能给我:
groceries.iceland.co.uk//frozen/chips-and-potato-products/c/FRZCAP?q=:relevance&view=list
浏览器将"/c/FRZCAP?q=:relevance&view=list"
添加到最后,这就是我想要的。
希望你能提供帮助 感谢
答案 0 :(得分:1)
编辑:只是为了确认,我看过你试图用JavaScript关闭的网站,看起来Mainnav网址是使用JavaScript生成的,所以你将无法在不使用无头浏览器。
根据@Sam和@ halfer的评论,如果您需要抓取一个包含JavaScript生成的动态网址的网站,那么您需要使用支持JavaScript的抓取工具。
如果你想在PHP中进行大量的开发,那么我建议不要尝试通过PHP使用无头浏览器,而是依靠可以抓取JavaScript呈现页面并为你返回内容的服务。
我找到的最好的一个,以及我们在项目中使用的那个,是https://phantomjscloud.com/
它便宜,快速,应该做你需要的一切。
祝你好运!