Python 3 URL-Request?

Gast #6840693
Lesenswert?
• ▲
▼
Funktioniert. In html stehen die Daten.
1
import urllib.request
2

3
with urllib.request.urlopen('https://duckduckgo.com/') as response:
4
    html = response.read()


Funktioniert nicht. Warum kommt die Fehlermeldung bei einem Request? Wo 
ist der Unterschied zu einem Browser bei dem sie nicht kommt?
1
with urllib.request.urlopen('https://mikrocontroller.net/') as response:
2
    html = response.read()

Fehlermeldung.
1
    raise HTTPError(req.full_url, code, msg, hdrs, fp)
2
urllib.error.HTTPError: HTTP Error 403: Forbidden
#6840751
Lesenswert?
• ▲
▼
Nein, kein UserAgent angegeben. Viele Webserver rejecten dann.
1
import urllib.request
2
req = urllib.request.Request(
3
    "https://www.mikrocontroller.net/", 
4
    data=None, 
5
    headers={
6
        'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.47 Safari/537.36'
7
    }
8
)
9

10
with urllib.request.urlopen(req) as response:
11
    html = response.read()
#6840777
Lesenswert?
• ▲
▼
Heiner schrieb:
> Richtig. Lustig ist, dass man sogar etwas völlig sinnfreies als user
> agent mitschicken kann und dann trotzdem die gewünschte Antwort bekommt.

Jein. Nicht alles. Der original User-Agent der Urllib wird vom Server 
aktiv geblockt.
1
    headers={
2
        'User-Agent': 'Python-urllib/2.7'
3
    }
4
-->HTTPError: HTTP Error 403: Forbidden

Eine Epsilon Änderung dagegen bewirkt schon, dass die Seite ausgeliefert 
wird:
1
    headers={
2
        'User-Agent': 'Python-urllob/2.7'
3
    }
4
-->geht durch

Das sagt uns eigentlich, dass der Webseitenbetreiber eventuell nicht 
gescraped werden möchte. Die Höflichkeit gebietet es dann, vor dem 
Abrufen größerer Datenmengen einmal freundlich beim Admin anzufragen.

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.