Ошибка атрибута и ошибка HTTP 404 при попытке очистить изображения с веб-сайтов - PullRequest
0 голосов
/ 09 мая 2020

Я пытаюсь получить все изображения из списка веб-сайтов. Однако я получил следующие сообщения об ошибках:

1) AttributeError:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-52-d786eb50d187> in <module>
     14     html = urlopen(link)
     15     bs = bs4(html, 'html.parser')
---> 16     images = bs4.find_all('img', {})
     17 
     18     for image in images:

/anaconda3/lib/python3.7/site-packages/bs4/element.py in find_all(self, name, attrs, recursive, text, limit, **kwargs)
   1698         :rtype: bs4.element.ResultSet
   1699         """
-> 1700         generator = self.descendants
   1701         if not recursive:
   1702             generator = self.children

AttributeError: 'str' object has no attribute 'descendants'

и

2) HTTP 404

HTTPError: HTTP Error 404: Not Found

Знаете ли вы что это такое и как я могу их исправить?

Я использую следующий код:

from bs4 import BeautifulSoup as bs4

images=[]

list_1=["file_1.csv"]

df = pd.read_csv("path"+list_1)

for link in df["Col"]:
    html = urlopen(link)
    bs = bs4(html, 'html.parser')
    images = bs4.find_all('img', {})

    for image in images: 
            images.append(image['src'])

Спасибо

1 Ответ

1 голос
/ 09 мая 2020

Вы можете попробовать

from bs4 import BeautifulSoup as bs4

images=[]

list_1=["file_1.csv"]

df = pd.read_csv("path"+list_1)

for link in df["Col"]:
    try:
        html = urlopen(link)
    except Exception:
        continue 

    bs = bs4(html, 'html.parser')
    images = bs4.find_all('img')

    for image in images: 
            images.append(image['src'])

Полученные вами ошибки были первой из пустых методов find_all, с помощью которых вы их просматривали {}, а ошибка 404 возникла из-за того, что метод urlopen не найден ссылка, которую вы предоставили.

...