php - 如何使用 PHP 从 Wikipedia API 获取结果?

标签 php file-get-contents wikipedia-api

我可能不应该使用 file_get_contents() 我应该使用什么?我想保持简单。

Warning: file_get_contents(http://en.wikipedia.org/w/api.php?action=query&titles=Your_Highness&prop=revisions&rvprop=content&rvsection=0): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden

最佳答案

您在这里遇到的问题与 MW API 的 User-Agent policy 有关。 - 您必须提供 User-Agent header ,并且该 header 必须提供某种与您联系的方式。

您可以使用 file_get_contents()stream context 来完成此操作:

$opts = array('http' =>
  array(
    'user_agent' => 'MyBot/1.0 (http://www.mysite.com/)'
  )
);
$context = stream_context_create($opts);

$url = 'http://en.wikipedia.org/w/api.php?action=query&titles=Your_Highness&prop=revisions&rvprop=content&rvsection=0';
var_dump(file_get_contents($url, FALSE, $context));

话虽如此,使用 cURL 可能被认为更“标准”。 ,这肯定会给你更多的控制权:

$url = 'http://en.wikipedia.org/w/api.php?action=query&titles=Your_Highness&prop=revisions&rvprop=content&rvsection=0';

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($ch, CURLOPT_USERAGENT, 'MyBot/1.0 (http://www.mysite.com/)');

$result = curl_exec($ch);

if (!$result) {
  exit('cURL Error: '.curl_error($ch));
}

var_dump($result);

关于php - 如何使用 PHP 从 Wikipedia API 获取结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8956331/

相关文章:

php - 多个 LEFT Join 在 mysql 中工作正常但在 php 中不正确

php - file_get_contents 似乎为数据添加了额外的返回

php - 使用 cURL 接受 cookie?

php - 如何在代理后面使用 file_get_contents()?

php - jQuery 显示/隐藏字段未通过 php 验证

syntax-error - 语法错误,意外的 T_RETURN,期待 T_FUNCTION oop php

php - 将 Laravel Web 应用程序复制到子域并分离数据库

wikipedia-api - 维基百科 API 的限制

javascript - 如何通过API获取维基百科文章的一小段文字和主图?

javascript - 从 api 解释 JSON 的最佳方法是什么?