如何在beautifulsoup中从span标签获取字符串

时间:2019-01-13 14:38:46

标签: python html beautifulsoup

在beautifulsoup中使字符串超出span标签时,我遇到了问题。 我尝试使用text属性,但这给了我AttributeError:return对象没有属性NoneType

text

上面的代码给出了AttributeError。如果我不使用.text,那么它给了我这个:

source = requests.get("https://www.k-ruoka.fi/kauppa/tuotehaku").text soup = BeautifulSoup(source, "lxml") product = soup.find("ul", class_="product-grid") for listt in product.find_all("li"): kg = listt.find("span", class_="reference").text print(kg)

但是我只想要它的“ 1,58”和“ kg”。

2 个答案:

答案 0 :(得分:2)

您的代码有效,您只需要在for循环中检查NoneType

for listt in product.find_all("li"):
    kg = listt.find("span", class_="reference")
    if kg:
        print(kg.text)

答案 1 :(得分:1)

Xay是正确的。问题是您的第一个元素是NoneType。 NoneType.text引发该错误。 Xay建议的另一种方法是:

import requests
from bs4 import BeautifulSoup

source = requests.get("https://www.k-ruoka.fi/kauppa/tuotehaku").text

soup = BeautifulSoup(source, "lxml")



product = soup.find("ul", class_="product-grid")

kgs = [listt.find("span", class_="reference").text for listt in product.find_all("li") 
           if listt.find("span", class_="reference")]

for kg in kgs:
    print(kg)

因此,要获得公斤,我要做的就是仅在listt.find(“ span”,class _ =“ reference”)遇到问题时要求输入文本。没有一个是错误的,因此它将不会被收集。