You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何创建类实例展示web scraper抓取的所有内容,解决仅输出最后一条的问题

问题根源

你的代码核心问题是productList.append(productEvent1)这行代码的缩进错误,处于for data in productInfo循环体之外:

  • 循环过程中每次都会新生成productEvent1实例覆盖上一次的结果
  • 直到整个循环跑完,才会把最后一次生成的实例加入列表,最终列表里仅存1个元素,只能显示最后一项

修复方案

只需要把productList.append(productEvent1)这行代码调整缩进,放到for循环内部即可,同时建议修改遍历变量名避免和类名Product重名引发潜在问题。

修正后完整代码如下:

class Product:
    def __init__(self, productName, productRating):
        self.productName = productName
        self.productRating = productRating

    def showProduct(self):
        print("Product Name:    " + self.productName)
        print("Rating:  " + self.productRating)

productList = []

productInfo = browser.find_elements_by_css_selector(".sg-col-12-of-20")

for data in productInfo:
    textContent = data.get_attribute('innerHTML')
    soup = BeautifulSoup(textContent, features="lxml")
    rawString = soup.get_text().strip()
    clean = rawString.split('*')
    row1 = 0
    row2 = 1
    productName = clean[row1]
    productRating = clean[row2]

    productEvent1 = Product(productName, productRating)
    # 调整缩进放到循环内部,每次生成实例立即加入列表
    productList.append(productEvent1)

# 遍历变量名改为product,避免和类名Product重名
for product in productList:
    product.showProduct()
    print("\n")

内容的提问来源于stack exchange,提问作者pythonnub

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:06:02