AttributeError: Modul Urllib hat keine Attributanforderung

Zeeshan Afridi 21 Juni 2023
  1. der AttributeError: module 'urllib' has no attribute 'request' in Python
  2. Beheben Sie den AttributeError: module 'urllib' has no attribute 'request' in Python
AttributeError: Modul Urllib hat keine Attributanforderung

Da urllib.request in Python ein eigenständiges Modul ist, kann urllib in dieser Situation nicht implementiert werden. Wenn ein Modul mehrere Submodule hat, kann das einzelne Laden jedes Moduls teuer sein und zu Problemen mit Elementen führen, die nichts mit Ihrem Programm zu tun haben.

Python wird den Import zwischenspeichern, da das Modul, das Sie verwenden, Importe für sich selbst verwendet, wodurch es zu einem Teil des Objekts wird.

der AttributeError: module 'urllib' has no attribute 'request' in Python

Dieser Fehler ist eine häufige Ausnahme in Python, wenn Sie versuchen, URL-Links durch Importieren von URL-Bibliotheken zu öffnen. Um diesen Fehler zu verstehen, nehmen wir ein Beispiel.

Codebeispiel:

import urllib

request = urllib.request.Request("http://www.python.org")

Ausgang:

AttributeError: module 'urllib' has no attribute 'request'

Sie können gelegentlich das benötigte Modul importieren, wenn Sie solche Pakete verwenden. Das urllib-Modul muss nicht alles laden, nur weil Sie nur einen kleinen Teil irgendeiner url brauchen.

Die Import-URL greift auf die gesamte Bibliothek zu; deshalb zeigt es einen Fehler an.

Beheben Sie den AttributeError: module 'urllib' has no attribute 'request' in Python

Sie können wie import urllib.request as urllib oder umgekehrt mit import urllib.request urllib.request.urlopen('http://www.python.org',timeout=1) importieren.

import urllib.request

with urllib.request.urlopen("http://www.python.org") as url:
    s = url.read()
    print(s)

Ausgang:

<!doctype html>
<head>
    <meta charset="utf-8">
'
'
'
'
from urllib.request import Request, urlopen


def get_page_content(url, head):

    req = Request(url, headers=head)
    return urlopen(req)


url = "https://example.com"
head = {
    "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/99.0.4844.84 Safari/537.36",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
    "Accept-Charset": "ISO-8859-1,utf-8;q=0.7,*;q=0.3",
    "Accept-Encoding": "none",
    "Accept-Language": "en-US,en;q=0.8",
    "Connection": "keep-alive",
    "refere": "https://example.com",
    "cookie": """your cookie value ( you can get that from your web page) """,
}

data = get_page_content(url, head).read()
print(data)

Ausgang:

<!doctype html>\n<html>\n<head>\n    <title>Example Domain</title>\n\n    <meta charset="utf-8" />\n
'
'
'
href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'

Anstatt das Modul urllib vollständig zu importieren und dann zu versuchen, auf dessen Submodulanforderung als Attribut zuzugreifen, sollten Sie die Submodulanforderung aus dem übergeordneten Modul urllib importieren.

Der import urllib print(urllib.request) funktioniert nicht, aber from urllib import request print(request) und import urllib.request sind beide erfolgreich.

Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

Verwandter Artikel - Python Error