0

我有这个从网站中提取 html 的 curl 函数。

function curl($url){
    $headers[]  = "User-Agent:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13";
    $headers[]  = "Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8";
    $headers[]  = "Accept-Language:en-us,en;q=0.5";
    $headers[]  = "Accept-Encoding:gzip,deflate";
    $headers[]  = "Accept-Charset:ISO-8859-1,utf-8;q=0.7,*;q=0.7";
    $headers[]  = "Keep-Alive:115";
    $headers[]  = "Connection:keep-alive";
    $headers[]  = "Cache-Control:max-age=0";

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_ENCODING, "");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
    $data = curl_exec($curl);
    curl_close($curl);
    return $data;
}

为了检索我使用的数据:

$html = curl($USE_URL);
$doc = new DOMDocument();
$doc->loadHTML($html);
$data = new DOMXPath($doc);




$date_list= $data->query('............');
$name_list= $data->query('............');

echo $date_list->length;
echo $name_list->length;

如果我在“ localhost ”中运行此代码,它可以顺利运行(给我长度52,52) :。但是如果我在我的 altervista 网站上使用完全相同的代码,它会给我date_list长度为零!(长度0,52

我提取的date_list格式是一个类似“08-09-2018 12:47”的字符串

curl $headers 可能有什么问题吗?

4

1 回答 1

0

奇怪的是,我通过更改查询解决了这个问题:我不得不解决这个问题:所以基本上我的新查询提取了一大组数据(例如“abcd deddeh dede 12:30 dhhh”)并通过操作手动提取我的真实数据字符串(使用拆分方法..)

$date_list= $data->query('.....HERE......');

我认为当 CURL 下载页面时,它不会让它完全不变。

于 2018-09-11T17:25:57.177 回答