Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如果网站内容的一部分是动态加载的,如何获取网站内容_Php_Dynamic_File Get Contents - Fatal编程技术网

Php 如果网站内容的一部分是动态加载的,如何获取网站内容

Php 如果网站内容的一部分是动态加载的,如何获取网站内容,php,dynamic,file-get-contents,Php,Dynamic,File Get Contents,首先,我需要通知你,我正在尝试从一个仅供成年人使用的网站获取内容,因此如果你未满18岁,请不要进入该网站(我需要此内容是为了使用他们的附属计划)。网站url为showup[dot]tv 我需要捕获每个女孩页面上2个位置显示的当前收到的硬币数量(当然是在线)。您可以查看此链接,该链接将显示网站上的号码位置: 下面是我能够编写的代码(我用girl Natusia作为示例女孩,但你必须将其更改为任何在线女孩)。它的工作,所以我可以通过发送cookie通过第一个“年龄确认”页面,然后我可以得到我需要的

首先,我需要通知你,我正在尝试从一个仅供成年人使用的网站获取内容,因此如果你未满18岁,请不要进入该网站(我需要此内容是为了使用他们的附属计划)。网站url为showup[dot]tv

我需要捕获每个女孩页面上2个位置显示的当前收到的硬币数量(当然是在线)。您可以查看此链接,该链接将显示网站上的号码位置:

下面是我能够编写的代码(我用girl Natusia作为示例女孩,但你必须将其更改为任何在线女孩)。它的工作,所以我可以通过发送cookie通过第一个“年龄确认”页面,然后我可以得到我需要的字符串,但。。。因为硬币的数量是动态加载的,所以我无法得到数字。。。相反,我得到了这个“-/-żetonów(0%)”有人能帮我得到正确的“解析”代码吗?(我只是个乞丐):


很好。问问他们你是否能得到他们的API,你可以为自己编写一些jQuery或JavaScript代码,比如说,每5秒钟用你的数据对JSON文件发出一个get请求,并在HTML中对其进行更改,这样它将是动态的。我曾经下载整个站点(同样的技术),缓存它并得到一个值,但当下载被破坏时,我并没有得到任何值,不得不删除缓存并再次加载站点。API是最佳实践。问他们这个问题。我问过他们,但他们要么没有API,要么不想分享。如果你想抓取内容,最好的方法是类似phpQuery的东西(免责声明:我一直是该项目的参与者)。。当您解析代码时,该值就是您得到的值。但由于他们网站上的一些脚本增加和更改了值(据我所知,PHP无法通过cURL运行JavaScript),所以它无法工作。或者可以查找他们的代码(查看页面源代码)并找到JavaScript,它可以更改值,并且您可以使用与“API”调用相同的方式进行调用?我guess@Fotis我认为我们无法处理和运行javascript,无法执行像这里这样的页面调用来获取数据的XHR调用。MichaiłAndriejBogdanow您需要一个无头的浏览器,比如抓取由AJAX调用填充的数据;或者,您甚至可以对javascript进行反向工程,查看页面执行哪些调用来获取数据,但使用无头浏览器将更容易,而且将来也更安全。问问他们你是否能得到他们的API,你可以为自己编写一些jQuery或JavaScript代码,比如说,每5秒钟用你的数据对JSON文件发出一个get请求,并在HTML中对其进行更改,这样它将是动态的。我曾经下载整个站点(同样的技术),缓存它并得到一个值,但当下载被破坏时,我并没有得到任何值,不得不删除缓存并再次加载站点。API是最佳实践。问他们这个问题。我问过他们,但他们要么没有API,要么不想分享。如果你想抓取内容,最好的方法是类似phpQuery的东西(免责声明:我一直是该项目的参与者)。。当您解析代码时,该值就是您得到的值。但由于他们网站上的一些脚本增加和更改了值(据我所知,PHP无法通过cURL运行JavaScript),所以它无法工作。或者可以查找他们的代码(查看页面源代码)并找到JavaScript,它可以更改值,并且您可以使用与“API”调用相同的方式进行调用?我guess@Fotis我认为我们无法处理和运行javascript,无法执行像这里这样的页面调用来获取数据的XHR调用。MichaiłAndriejBogdanow您需要一个无头的浏览器,比如抓取由AJAX调用填充的数据;或者,您甚至可以对javascript进行反向工程,查看页面执行哪些调用来获取数据,但使用无头浏览器将更容易,而且将来也更安全。
<?php

    function get_string_between($string, $start, $end){
    $string = ' ' . $string;
    $ini = strpos($string, $start);
    if ($ini == 0) return '';
    $ini += strlen($start);
    $len = strpos($string, $end, $ini) - $ini;
    return substr($string, $ini, $len);
}

$opts = array(
  'http'=>array(
    'method'=>"GET",
    'header'=>"Accept-language: en\r\n" .
              "Cookie: accept_rules=true\r\n"
  )
);

$context = stream_context_create($opts);

$fullstring = file_get_contents('http://showup.tv/Natusia', false, $context);
$parsed = get_string_between($fullstring, '<span class="progress-text">', '</span>');

echo $parsed;

?>