Python 为什么';NavigableString';对象没有属性';文本';?

Python 为什么';NavigableString';对象没有属性';文本';?,python,web-scraping,beautifulsoup,Python,Web Scraping,Beautifulsoup,我正试图从books.toscrape.com上获取产品名称、价格和库存。但是,我遇到了错误AttributeError:“NavigableString”对象没有属性“text”。什么是Gablestring?我在代码中没有看到它。“text”属性有什么问题 import requests from bs4 import BeautifulSoup url = "http://books.toscrape.com/" response = requests.get(url

我正试图从books.toscrape.com上获取产品名称、价格和库存。但是,我遇到了错误AttributeError:“NavigableString”对象没有属性“text”。什么是Gablestring?我在代码中没有看到它。“text”属性有什么问题

import requests
from bs4 import BeautifulSoup 
url = "http://books.toscrape.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, 'lxml' )
stock = soup.find_all('p', class_='instock availability')
price = soup.find_all('p', class_='price_color')
title = soup.find_all('h3')
for i in range(0, 2):
    quoteTitles = title[i].find('a')
    for quoteTitle in quoteTitles:
        print(quoteTitle.text.strip('\n'))
    print(price[i].text.strip('Â'))
    print(stock[i].text.strip('\n'))
以下是错误代码:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
<ipython-input-41-1e5301201749> in <module>
     10     quoteTitles = title[i].find('a')
     11     for quoteTitle in quoteTitles:
---> 12         print(quoteTitle.text.strip('\n'))
     13     print(price[i].text.strip('Â'))
     14     print(stock[i].text.strip('\n'))

/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/bs4/element.py in __getattr__(self, attr)
    914             return self
    915         else:
--> 916             raise AttributeError(
    917                 "'%s' object has no attribute '%s'" % (
    918                     self.__class__.__name__, attr))

AttributeError: 'NavigableString' object has no attribute 'text'
---------------------------------------------------------------------------
AttributeError回溯(最近一次呼叫上次)
在里面
10 quoteTitles=标题[i]。查找('a')
11对于报价中的报价:
--->12打印(quoteTitle.text.strip('\n'))
13打印(价格[i].text.strip('t'))
14打印(库存[i].text.strip('\n'))
/Library/Frameworks/Python.framework/Versions/3.8/lib/python3.8/site-packages/bs4/element.py in_u___getattr__(self,attr)
914回归自我
915其他:
-->916提高属性错误(
917““%s”对象没有属性“%s”(
918自身(类别、名称、属性)
AttributeError:“NavigableString”对象没有属性“text”
quoteTitle没有任何对象作为文本。如果要打印qoute文本,请打印直接引用

print(quoteTitle)
试试这个:

for i in range(0, 2):  // fpr print all the detail change this for loop with `for i in range(0, len(title)):`.
    quoteTitles = title[i].find('a')
    for quoteTitle in quoteTitles:
        print(quoteTitle)
        #print(quoteTitle.text.strip('\n'))
    print(price[i].text.strip('Â'))
    print(stock[i].text.strip())
输出将是:

A Light in the ...
£51.77
In stock
Tipping the Velvet
£53.74
In stock

为什么你认为它应该有这个属性?只需调用
quoteTitle.strip('\n')
。嗨,谢谢你的回复。但是该代码应该显示所有产品的产品名称、价格和库存,而不仅仅是两个。要打印所有产品,请更改范围(0,2)中i的
和范围(0,len(title))中i的
。如果它起作用,请检查它作为答案plz。在两个箭头之间打勾。
A Light in the ...
£51.77
In stock
Tipping the Velvet
£53.74
In stock