[英]How to scrape page links from dynamic web page using PHP?
我想使用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');
}
}
?>
但它並沒有為這個特定頁面完成工作。 例如,我的代碼返回一個網址,例如:
groceries.iceland.co.uk//frozen-chips-and-potato-products
但我希望它給我: groceries.iceland.co.uk//frozen/chips-and-potato-products/c/FRZCAP?q=:relevance&view=list
: groceries.iceland.co.uk//frozen/chips-and-potato-products/c/FRZCAP?q=:relevance&view=list
瀏覽器在末尾添加"/c/FRZCAP?q=:relevance&view=list"
,這就是我想要的。
希望你能幫忙謝謝
編輯:只是為了確認一下,我查看了您要關閉JavaScript進行爬網的網站,並且看來Mainnav網址是使用JavaScript生成的,因此如果不使用無頭瀏覽器,您將無法爬網該頁面。
根據@Sam和@halfer的評論,如果您需要抓取具有JavaScript生成的動態URL的網站,則需要使用支持JavaScript的抓取工具。
如果您想用PHP進行大部分開發工作,那么我建議您不要嘗試通過PHP使用無頭瀏覽器,而應該依靠可以刮取JavaScript呈現頁面並為您返回內容的服務。
我發現的最好的一種,也是我們在項目中使用的一種,是https://phantomjscloud.com/
它便宜,快速,可以滿足您的所有需求。
祝好運!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.