Добавление BeautifulSoup найти элемент в списке - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть следующий код:

import requests
from bs4 import BeautifulSoup

page = requests.get("https://www.seminuevos.com/usados/-/autos/-/volkswagen")
soup = BeautifulSoup(page.content, "html.parser")

kkt = soup.find_all("div", class_="card hoverable") # mazga
for tag in kkt:
    print(tag.find('a', href=True)['href'])

С помощью этого кода я получаю нужные мне ссылки (только для печати), но не могу добавить их в список. Если я использую:

list = []
for tag in kkt:
    item = tag.find('a', href=True)['href']
    list.append(item)

Я получаю эту ошибку:

Traceback (most recent call last):
  File "<input>", line 3, in <module>
TypeError: 'NoneType' object is not subscriptable

Как я могу добавить результат: для тега в kkt: item = tag.find ('a', href = True) ['href'] к списку, строка за строкой? Я также попробовал:

list = [tag.find('a', href=True)['href'] for tag in kkt]

Не работает.

1 Ответ

0 голосов
/ 07 ноября 2018

Это связано с тем, что не все теги div в итерируемой kkt содержат теги a, поэтому find в цикле иногда возвращает None. Измените его так, чтобы оно выглядело так:

for tag in kkt:
    item = tag.find('a', href=True)
    if item:
        list.append(item['href'])
...