在列表中添加BeautifulSoup查找元素

时间:2018-11-06 22:12:23

标签: python beautifulsoup append typeerror

我有以下代码:

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 :(得分:0)

这是因为div中并非所有kkt标记都包含a标记,因此循环中的find有时返回None。对其进行更改,使其看起来像这样:

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