Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.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
当涉及javascript时抓取数据?_Javascript_Php_Html - Fatal编程技术网

当涉及javascript时抓取数据?

当涉及javascript时抓取数据?,javascript,php,html,Javascript,Php,Html,我对网络很陌生,所以请原谅我的无知。我正试图建立一个网站,从一个英国自行车赛事的数据,然后分析它。我遇到的主要问题是,要获得表,必须单击“查看进入者”按钮,我认为该按钮运行一个JavaScript来打开表。那么,我如何从给定的事件中抓取数据呢 提前谢谢 以下是一个示例:确保britischcycling.org.uk允许您刮取数据。 然后: URL包含eventId,在您的示例中是141520。 网站使用该eventId请求此URL: 如您所见,141520数字是所有将发生变化的数字 问题是您将

我对网络很陌生,所以请原谅我的无知。我正试图建立一个网站,从一个英国自行车赛事的数据,然后分析它。我遇到的主要问题是,要获得表,必须单击“查看进入者”按钮,我认为该按钮运行一个JavaScript来打开表。那么,我如何从给定的事件中抓取数据呢

提前谢谢


以下是一个示例:

确保britischcycling.org.uk允许您刮取数据。

然后: URL包含eventId,在您的示例中是141520。 网站使用该eventId请求此URL:

如您所见,141520数字是所有将发生变化的数字

问题是您将收到一个完整的HTML页面。没有你正在寻找的内容。通过添加
X-request-With:XMLHttpRequest
标题,您将收到正确的数据

以下是PHP代码(由Postman生成):


你应该发布一些代码,更好地定义你的问题。可能会帮助你。“我认为它运行JavaScript”-->恐怕我们还帮不了你。互联网上有很多教程网站。谢谢,但是(可能是个愚蠢的问题)你是怎么得到这个URL的,因为我在按钮的源代码中找不到类似的东西?有了Chrome,你可以打开开发者工具(CTRL+SHIFT+I)。然后转到网络选项卡,过滤XHR请求。重新加载页面,然后单击链接打开事件。然后您将看到一个请求。单击请求以获取详细信息。您是否知道为什么此url出现文件\u get\u contents()错误?它说“无法打开流”此问题有相同的问题\w解决方案
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://www.britishcycling.org.uk/events_version_2/ajax_get_organisation_events?event_id=146685",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => array(
    "cache-control: no-cache",
    "x-requested-with: XMLHttpRequest"
  ),
));

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}