Wikipedia hat einen simplen aber effektiven Schutz, um sich vor Content-Diebstahl zu schützen: eine Abfrage ohne "User-Agent" erhält nur einen praktisch nichts-sagenden Fehler:
Failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden
Anders ausgedrückt: wer mit dem Browser auf Wikipedia surft hat kein Problem, wer aber einen Grabber nutzt um Wikipedia-Content abzufragen kriegt keine Ergebnisse.
Nun ist es aber gerade kein Content-Diebstahl wenn man Wikipedia-Texte auf seiner Homepage zitiert, egal ob in Auszügen oder als Ganzes -- solange die Herkunft bzw. der Autor genannt wird. (Diesen Umstand wissen die meisten Wikipedia-Autoren aber selbst auch nicht.)
Um Wikipedia-Content trotzdem abzufragen nutze ich diese Python-Funktion:
# -*- coding: UTF-8 -*-
import urllib2
def get_wiki_page(keyword):
headers = {
'User-Agent': 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3',
'Accept-Encoding': 'deflate',
'Accept-Charset': 'utf-8',
'Referer': 'http://de.wikipedia.org/wiki/Hauptseite',
}
url = 'http://de.wikipedia.org/wiki/%s' % keyword
try:
request = urllib2.Request(url, None, headers)
response = urllib2.urlopen(request)
content = response.read()
response.close()
return content
except urllib2.HTTPError:
print "HTTPError: %s" % url
print get_wiki_page("Urheberrecht")
In PHP würde diese Funktion etwa so aussehen. Hier mit Hilfe der Curl-Funktionen.
<?php
function get_wiki_page($keyword)
{
$url = 'http://de.wikipedia.org/wiki/'.$keyword;
$ch = curl_init();
$options = array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => True,
CURLOPT_HEADER => False,
CURLOPT_USERAGENT => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3',
CURLOPT_ENCODING => 'deflate',
CURLOPT_REFERER => 'http://de.wikipedia.org/wiki/Hauptseite',
);
curl_setopt_array($ch, $options);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
echo get_wiki_page("Urheberrecht");
?>
Comments closed
Sorry, new comments are no longer allowed for this entry.
Write me an email if you have feedback or any questions regarding this post. If you found this post useful and just want to say thank you then don't forget that I have an Amazon Wishlist. :-)