我对网络内容很新,所以请原谅我的无聊。我正在尝试制作一个从英国自行车赛事中获取数据然后对其进行分析的网站。我遇到的主要问题是,要获得表格,你必须点击“查看参赛者”按钮,我认为它会运行一个JavaScript,从而调出表格。那么我将如何从特定事件中抓取数据呢?
先谢谢
以下是一个示例:https://www.britishcycling.org.uk/events/details/141520/London-Dynamo-Summer-Road-Race-2016
答案 0 :(得分:0)
确保britischcycling.org.uk允许您抓取数据。
,然后:强> 该URL包含eventId,在您的示例中,它将是141520。 使用该事件,该网站会请求此网址:https://www.britishcycling.org.uk/events_version_2/ajax_get_organisation_events?event_id=141520
正如您所看到的,141520号码将会发生变化。
问题是您将收到一个完整的HTML页面。没有你正在寻找的内容。通过添加X-Requested-With: XMLHttpRequest
标题,您将收到正确的数据。
这是PHP代码(使用Postman生成):
<?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;
}