在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”。
答案 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”)遇到问题时要求输入文本。没有一个是错误的,因此它将不会被收集。