LWP::Simple::get funktioniert nicht bei allen urls
Dimitri Rettig
- perl
Hallo,
aus irgendeinem Grunde liest get "http://search.ebay.de/search/search.dll?x=0&y=0&MfcISAPICommand=GetResult&krd=1&ht=1&shortcut=4&SortProperty=MetaEndSort&cgiurl=http%3A%2F%2Fcgi.ebay.de%2Fws%2F&maxRecordsPerPage=50&st=2&ebaytag1code=77&query=perl den Stream aus, get "http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=perl&btnG=Suche&meta=" gibt hingegen nur "" zurück. Woran könnte es liegen?
Mit freundlichen Grüßen
Dimitri Rettig
Hi,
aus irgendeinem Grunde liest get "http://search.ebay.de/search/search.dll?x=0&y=0&MfcISAPICommand=GetResult&krd=1&ht=1&shortcut=4&SortProperty=MetaEndSort&cgiurl=http%3A%2F%2Fcgi.ebay.de%2Fws%2F&maxRecordsPerPage=50&st=2&ebaytag1code=77&query=perl den Stream aus, get "http://www.google.de/search?hl=de&ie=UTF-8&oe=UTF-8&q=perl&btnG=Suche&meta=" gibt hingegen nur "" zurück. Woran könnte es liegen?
getprint liefert mir bei der Google-Adresse einen 403 Forbidden. Google mag es anscheinend nicht, wenn ein Bot direkt Suchergebnisse aufruft.
ortenau-s-bahner
Hallo,
und wie kann ich das Umgehen? Eine Subklasse von UserAgent bilden?
Mit freundlichen Grüßen
Dimitri Rettig
Hi,
und wie kann ich das Umgehen? Eine Subklasse von UserAgent bilden?
Natürlich kommt jetzt erst mal der obligatorische Hinweis, dass Google sicherlich seine Gründe hat, in bestimmten Bereichen keine Bots zuzulassen und du das respektieren solltest.
Wenn du dennoch Bot-en willst, kannst du über Socket eine Verbindung aufbauen. Da kannst du dann als UA-Kennung schicken, was du willst. Hab so was auch mal ausprobiert, weil http://reiseauskunft.bahn.de ähnlich empfindlich ist. Einfach Verbindung auf Port 80 herstellen und dann mit GET die Datei abrufen. Für Details hilft hoffentlich http://www.w3.org/Protocols/rfc2616/rfc2616.html
Ob dir UserAgent weiter hilft, weiss ich nicht, IIRC zieht der schon den Schwanz ein, wenn er über robots.txt abgeblockt wird.
HTH
ortenau-s-bahner