Python WebScrapper - объект не имеет атрибута 'urlretrieve' - PullRequest
0 голосов
/ 23 декабря 2019

Я пытаюсь создать Python Webscrapper, который загружает определенное количество изображений из URL, в мой текущий каталог. Однако для следующего кода:

urllib.request.urlretrieve(each, filename)

Это говорит о том, что: AttributeError: у объекта 'function' нет атрибута 'urlretrieve' при запуске программы

Вот полный код:

from urllib.request import urlopen
from bs4 import BeautifulSoup as soup


url = 'https://unsplash.com/s/photos/download'



def download_imgs(url, amountOfImgs):
    html = urlopen(url).read()
    #parsing the html from the url
    page_soup = soup(html, "html.parser")
    images = [img for img in page_soup.findAll('img')]
    counter = 0
    #compiling the unicode list of image links
    image_links = [each.get('src') for each in images]

    for each in image_links:
        if(counter <= amountOfImgs):
            filename = each.split('/')[-1]
            urllib.request.urlretrieve(each, filename)
            counter += 1
        else:
            return image_links




print(download_imgs(url, 5))

1 Ответ

1 голос
/ 23 декабря 2019

Похоже, что когда вы импортировали только URLOpen, вы пропустили все остальное.

Я сделал это немного по-другому, я получил html, используя метод questions.get, и удалил необходимость открытия URL, вымог бы просто сделать импорт urlopen, urlretrieve

, если вы хотите использовать мой, я знаю, это сработало,

import urllib.request
from bs4 import BeautifulSoup as soup
import requests

url = 'https://unsplash.com/s/photos/download'



def download_imgs(url, amountOfImgs):
    req=requests.get(url)
    html=req.text
    #parsing the html from the url
    page_soup = soup(html, "html.parser")
    images = [img for img in page_soup.findAll('img')]
    counter = 0
    #compiling the unicode list of image links
    image_links = [each.get('src') for each in images]

    for each in image_links:
        if(counter <= amountOfImgs):
            filename = each.split('/')[-1]
            urllib.request.urlretrieve(each, filename)
            counter += 1
        else:
            return image_links




print(download_imgs(url, 5))
...