【问题标题】:CURL won't get the data from this websiteCURL 不会从这个网站获取数据
【发布时间】:2018-05-18 11:56:00
【问题描述】:

我正在尝试从 www.dotabuff.com 检索数据以获取 Steam ID 列表,但我只能得到“我们找不到您要找的东西!”的回报。

目标是访问网站,用他的 Steam ID 搜索玩家并提取他的胜率。

(这适用于非常小的列表,不会打扰dotabuff)。

这是我的代码(带有静态 Steam ID 的示例):

//create array of data to be posted
$post_data['utf8'] = '✓';
$post_data['q'] = '76561198055615656';
$post_data['commit'] = 'Search';

//traverse array and prepare data for posting (key1=value1)
foreach ( $post_data as $key => $value) {
$post_items[] = $key . '=' . $value;
}

//create the final string to be posted using implode()
$post_string = implode ('&', $post_items);

//create cURL connection
$curl_connection = 
curl_init('https://www.dotabuff.com//');

//set options
curl_setopt($curl_connection, CURLOPT_CONNECTTIMEOUT, 30);
curl_setopt($curl_connection, CURLOPT_USERAGENT, 
"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)");
curl_setopt($curl_connection, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_connection, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl_connection, CURLOPT_FOLLOWLOCATION, 1);

//set data to be posted
curl_setopt($curl_connection, CURLOPT_POSTFIELDS, $post_string);

//perform our request
$result = curl_exec($curl_connection);
echo $result;

//close the connection
curl_close($curl_connection);    

【问题讨论】:

标签: php curl post web


【解决方案1】:

您正在使用带有 curl 的 POST 进行搜索,但查看 Dotabuff 网站,搜索表单正在使用 GET,所以我怀疑该网站正在寻找 GET vars 而不是 POST vars。我还没有对此进行测试,但我建议向https://www.dotabuff.com/search?q=76561198055615656(不带 POSTFIELDS)发出 curl 请求,看看它会给你带来什么。

【讨论】:

    【解决方案2】:

    在没有 URL 的情况下初始化 curl,或组装 URL 的 GET 版本并将其发布到站点。

    例如,如果您想要有关用户“USH!”的信息(我随机选择了一个)。您要合成的 URL 如下所示:

    https://www.dotabuff.com/search?utf8=%E2%9C%93&q=USH%21&button=
    

    我建议使用 urlencode 将玩家 ID 转换为 GET URI 安全字符串

    例如:

    $safe_player_id = urlencode($player_id)
    
    $URI = sprintf("https://www.dotabuff.com/search?q=%s&button=",$safe_player_id);
    

    或者,如果您知道他们的玩家 ID 代码 (int),那么这将有助于获取统计信息页面(可行):

    https://www.dotabuff.com/players/76561198055615656
    

    然后你只需要解析你想要的页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 2013-01-28
      相关资源
      最近更新 更多