Wikipedia auslesen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Wikipedia auslesen

    hallo,

    ich lese mittels nachfolgendem php-skript inhalte einer wikipedia-datei aus.

    Es soll der Inhalt z.B. "Studium" ausgegeben werden. Soweit wird auch alles angezeigt. die externen Links innerhalb der ausgelesenen Datei funktionieren nicht - sie haben meine Domain und $default_title, sie gehen auf meine index..

    Wie bekomme ich default_title in die Links?


    PHP-Code:

    $default_title 
    'Studium'# If you do not specify a title, this will be your default page.

    $sourceurl 'http://de.wikipedia.org/wiki/'# This URL needs adjusting sometimes.
    $pathfromroot substr$_SERVER['REQUEST_URI'], 0strpos$_SERVER['REQUEST_URI'], "?" ) );
    $title_wiki $default_title;
    $nicetitle str_replace"_"" "stripslashes$title_wiki ) );

    function 
    callback$buffer ) {

             global 
    $nicetitle;
             global 
    $title_wiki;
             global 
    $sourceurl;

             
    # Separate the article content
               
    $buffer substr$bufferstrpos$buffer'<!-- start content -->' ) );
               
    $buffer substr$buffer0strpos$buffer'<div class="printfooter">' ) );
             
    # Replace relative links (use another wiki server)
               
    $buffer str_replace'"/w/skin''"http://de.wikipedia.org/w/skin'$buffer );
               
    $buffer str_replace'"/skins''"http://de.wikipedia.org/skins'$buffer );
             
    # Replace relative links (use this server)
               
    $buffer str_replace'"/wiki/''"' $pathfromroot '?title='$buffer );
             
    # Remove edit links
               
    $buffer str_replace">Bearbeiten<""><"$buffer );
               
    $buffer str_replace"[<""<"$buffer );
               
    $buffer str_replace">]"">"$buffer );
             
    $buffer utf8_decode ($buffer);
             
    $buffer str_replace'href="/w/index.php?''target="_blank" href="http://de.wikipedia.org/w/index.php?'$buffer ); # These are typically links to non-existent pages, so the Wikipedia edit page has to open.

             
    if ( $buffer <> '' ) {
                  
    $buffer '<table width=100% cellspacing=0 cellpadding=1 bgcolor="#EEEEEE" border=0><tr><td>
                             

     <small>Hinweis: Text und Bilder dieses Beitrags stammen aus dem Artikel 
            <a href="http://de.wikipedia.org/wiki/'
    .$title.'" title="http://de.wikipedia.org/wiki/'.$title.'" target="_blank">'.$title.'</a>
     der freien Enzyklop&auml;die 
        <a title="http://de.wikipedia.org" target="_blank" href="http://de.wikipedia.org/wiki/Hauptseite">Wikipedia</a> 
            und stehen unter der <a href="http://www.gnu.org/licenses/fdl.txt" target="_blank">GNU Free Documentation License</a>.
     Die Liste der Autoren ist in der Wikipedia unter
        <a target="_blank" title="http://de.wikipedia.org/w/wiki.phtml?title='
    .$title.'&amp;action=history" href="http://de.wikipedia.org/w/index.php?title=Studium&action=history">dieser Seite</a> verf&uuml;gbar, der Original-Artikel l&auml;sst sich
     <a target="_blank" title="http://de.wikipedia.org/w/wiki.phtml?title='
    .$title.'&amp;action=edit" href="http://de.wikipedia.org/w/index.php?title=Studium&action=edit">hier</a>
     bearbeiten.
                          
    </tr></td><table><p>' 
    $buffer;
                         
                } else {
                  
    $buffer '<p>Unfortunately, no content could be extracted!
                             <p><a href="javascript:history.go(-1)">Return to the previous page</a> or consult the <a target="_blank" href="' 
    $sourceurl $title_wiki '">Wikipedia article on "' $nicetitle '"</a>.';
                }

             return 
    $buffer;
           }


    # Your page header comes here...'

    ob_start("callback");
    #include $sourceurl . $title_wiki;
    $cuu = new CURL;
    echo 
    $cuu -> get$sourceurl $title_wiki );
    ob_end_flush();

    # Your page footer comes here...'



    # Define the cURL class:
      
    class CURL {
         var 
    $callback false;

         function 
    setCallback($func_name) {
            
    $this->callback $func_name;
         }

         function 
    doRequest($method$url$vars) {
            
    $ch curl_init();
            
    curl_setopt($chCURLOPT_URL$url);
            
    #curl_setopt($ch, CURLOPT_HEADER, 1);
            
    curl_setopt($chCURLOPT_USERAGENT$_SERVER['HTTP_USER_AGENT']);
            
    #curl_setopt($ch, CURLOPT_USERAGENT, 'User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)');
            
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
            
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
    curl_setopt($chCURLOPT_COOKIEJAR'cookie.txt');
            
    curl_setopt($chCURLOPT_COOKIEFILE'cookie.txt');
            if (
    $method == 'POST') {
                
    curl_setopt($chCURLOPT_POST1);
                
    curl_setopt($chCURLOPT_POSTFIELDS$vars);
            }
            
    $data curl_exec($ch);
            
    curl_close($ch);
            if (
    $data) {
                if (
    $this->callback)
                {
                    
    $callback $this->callback;
                    
    $this->callback false;
                    return 
    call_user_func($callback$data);
                } else {
                    return 
    $data;
                }
            } else {
                return 
    curl_error($ch);
            }
         }

         function 
    get($url) {
            return 
    $this->doRequest('GET'$url'NULL');
         }

         function 
    post($url$vars) {
            return 
    $this->doRequest('POST'$url$vars);
         }
      } 
    Danke für ne Hilfe
    Zuletzt geändert von erwin99; 05.06.2008, 06:15.

  • #2
    Warum nicht so: http://www.mediawiki.org/wiki/API:Query ???
    Und noch ein bnisschen simplexml und fertig ist die Laube

    Du brauchst dem Wikipedia keinen IE vorspielen.
    Wir werden alle sterben

    Kommentar


    • #3
      Die Links in Wiki beginnen jeweils mit / wenn ich nicht irre. Dann kannst du doch einfach ein str_replace() auf href="/ machen und mit href="http://de.wikipedia.org/ ersetzen
      Besser und einfacher geht's wie bereits erwähnt mit der API
      Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

      [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
      Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

      Kommentar

      Lädt...
      X