AttributeError: у объекта 'module' нет атрибута 'urlopen' - PullRequest
114 голосов
/ 19 октября 2010

Я пытаюсь использовать Python для загрузки исходного кода HTML сайта, но получаю эту ошибку.

Traceback (последний последний вызов):
файл "C: \ Users \ Sergio.Tapia \ Documents \ NetBeansProjects \ DICParser \ SRC \ WebDownload.py", строка 3, в file = urllib.urlopen ("http://www.python.org") AttributeError: у объекта 'module' нет атрибут «урлопен»

Я следую инструкции здесь: http://www.boddie.org.uk/python/HTML.html

import urllib

file = urllib.urlopen("http://www.python.org")
s = file.read()
f.close()

#I'm guessing this would output the html source code?
print(s)

Я использую Python 3, спасибо за помощь!

Ответы [ 9 ]

192 голосов
/ 19 октября 2010

Это работает в Python 2.x.

Для Python 3 посмотрите в документы :

import urllib.request

with urllib.request.urlopen("http://www.python.org") as url:
    s = url.read()
    # I'm guessing this would output the html source code ?
    print(s)
18 голосов
/ 07 декабря 2015

Совместимое с Python 2 + 3 решение:

import sys

if sys.version_info[0] == 3:
    from urllib.request import urlopen
else:
    # Not Python 3 - today, it is most likely to be Python 2
    # But note that this might need an update when Python 4
    # might be around one day
    from urllib import urlopen


# Your code where you can use urlopen
with urlopen("http://www.python.org") as url:
    s = url.read()

print(s)
13 голосов
/ 13 апреля 2015
import urllib.request as ur
s = ur.urlopen("http://www.google.com")
sl = s.read()
print(sl)

В Python v3 «urllib.request» сам по себе является модулем, поэтому здесь нельзя использовать «urllib».

4 голосов
/ 14 июня 2017

Чтобы получить ' dataX = urllib.urlopen (url) .read () ', работающий в python 3 (это было бы правильно для python 2 ) нужно просто поменять 2 мелочи.

1: Сам оператор urllib (добавьте .request посередине):

dataX = urllib.request.urlopen(url).read()

2: Оператор импорта, предшествующий ему (изменить с 'import urlib' на:

import urllib.request

И это должно работать в python3:)

3 голосов
/ 27 апреля 2015
import urllib.request as ur

filehandler = ur.urlopen ('http://www.google.com')
for line in filehandler:
    print(line.strip())
1 голос
/ 17 июля 2018

Решение для python3:

from urllib.request import urlopen

url = 'http://www.python.org'
file = urlopen(url)
html = file.read()
print(html)
1 голос
/ 13 июля 2018

Для Python 3 попробуйте что-то вроде этого:

import urllib.request
urllib.request.urlretrieve('http://crcv.ucf.edu/THUMOS14/UCF101/UCF101/v_YoYo_g19_c02.avi', "video_name.avi")

Это загрузит видео в текущий рабочий каталог

Я получил помощь ЗДЕСЬ

0 голосов
/ 19 июня 2019
import urllib
import urllib.request
from bs4 import BeautifulSoup


with urllib.request.urlopen("http://www.newegg.com/") as url:
    s = url.read()
    print(s)
soup = BeautifulSoup(s, "html.parser")
all_tag_a = soup.find_all("a", limit=10)

for links in all_tag_a:
    #print(links.get('href'))
    print(links)
0 голосов
/ 20 августа 2018

ваш код, используемый в python2.x, вы можете использовать так:

from urllib.request import urlopen
urlopen(url)

, кстати, предложите другую модель, называемую запросы, более удобной, вы можете использовать pip, установить ее икак это:

import requests
requests.get(url)
requests.post(url)

Я думал, что это легко использовать, я тоже начинающий .... хахах

...