簡體   English   中英

通過file_get_contents發送url參數返回nothig

[英]Sending url parameters through file_get_contents returns nothig

我正在嘗試抓取一個網站,以獲取美國各縣的經度和緯度(因此有3306個,為什么我試圖通過代碼而不是手動進行操作)

我正在使用下面的代碼

function GetLatitude($countyName,$stateShortName){
        //Create DOM from url
        $page = file_get_contents("https://www.mapdevelopers.com/geocode_tool.php?$countyName,$stateShortName");
        $doc = new DOMDocument();
        $doc->loadHTML($page);
        $node = $doc->getElementById("display_lat");

        var_dump($doc);
    }

    GetLatitude("Guilford County","NC");

這不會返回任何內容,但是如果我更改url以不使用“ https://www.mapdevelopers.com/geocode_tool.php ”之類的參數,則可以看到$doc現在包含一些信息,但這沒有用,因為我需要的值(緯度)取決於傳遞到url中的參數。

我該如何解決這個問題?

編輯:

基於對參數進行編碼的建議,我將代碼更改為此,現在文檔包含信息,但看起來好像是在忽略參數

<?
function GetLatitude($countyName,$stateShortName){
    $countyName = urlencode($countyName);
    $stateShortName = urlencode($stateShortName);
    //Create DOM from url
    $page = file_get_contents("https://www.mapdevelopers.com/geocode_tool.php?address=$countyName,$stateShortName");
    $doc = new DOMDocument();
    $doc->loadHTML($page);
    $node = $doc->getElementById("display_lat");

    var_dump($doc);
    }

    GetLatitude("Clarke County","AL");
?>

您的問題是頁面加載中不存在緯度信息等,而Java腳本將其放置在那里

您將很難嘗試使用JS運行網頁並從PHP抓取網頁而中間沒有任何東西,也許要用puppet或phantomjs之類的東西重試此項目,以便可以在真正的瀏覽器上運行腳本。

搜索頁面上有一個對https://www.mapdevelopers.com/data.php的ajax請求。發送POST或GET請求將為您提供所需的響應

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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