簡體   English   中英

如何使用PHP從動態網頁中抓取頁面鏈接?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM