1

MediaWiki を使用して (特定のカテゴリから) ウィキペディアのページを取得しようとしています。このために、このチュートリアルListing 3. Listing pages within a categoryに従っています。私の質問は: Zend Framework を使用せずにウィキペディアのページを取得する方法は? そして、インストールする必要のないphpベースのRestクライアントはありますか? Zend は最初にパッケージをインストールし、いくつかの構成を行う必要があるため...そして、私はこれらすべてを行いたくありません。

グーグルといくつかの調査の後、cURL と呼ばれるツールを見つけました。PHP で cURL を使用すると、残りのサービスを構築することもできます。私は残りのサービスを実装するのは本当に初めてですが、すでにphpで何かを実装しようとしました:

<?php
    header('Content-type: application/xml; charset=utf-8');

    function curl($url) {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $data = curl_exec($ch);
        curl_close($ch);
        return $data;
    }
    $wiki = "http://de.wikipedia.org/w/api.php?action=query&list=allcategories&acprop=size&acprefix=haut&format=xml";
    $result = curl($wiki);
    var_dump($result);
?>

しかし、結果にエラーが発生しました。誰でもこれを手伝ってもらえますか?

アップデート:

This page contains the following errors:
error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.
4

1 に答える 1

0

返信に時間がかかって申し訳ありません。

コマンド ラインでコードを実行すると、次のような出力が得られます。

string(120) "Scripts should use an informative User-Agent string with contact information, or they may be IP-blocked without notice.
"

したがって、問題は、カスタム User-Agent ヘッダーを送信するように cURL に指示しないことで、Wikimedia ボットの User-Agent ポリシーにぶつかっているようです。これを修正するには、そのページの下部にあるアドバイスに従って、次のような行をスクリプトに追加します (他のcurl_setopt()呼び出しと一緒に)。

$agent = 'ProgramName/1.0 (http://example.com/program; your_email@example.com)';
curl_setopt($ch, CURLOPT_USERAGENT, $agent);

Ps。また、コンテンツが実際に有効な XML であることが確実application/xmlでない限り、コンテンツ タイプを設定したくない場合もあります。特に、入力が有効であっても、出力は有効な XML ではありません。var_dump()

テストと開発では、コマンド ラインから PHP を実行するか、text/plainコンテンツ タイプを使用することをお勧めします。または、必要に応じて、 を使用text/htmlして出力をエンコードしますhtmlspecialchars()


Ps。この質問は以前に尋ねられ、回答されていることに気付いたので、これをコミュニティ wiki の回答にしました。

于 2013-03-19T17:40:38.520 に答える