首页 > 解决方案 > 他们告诉我错误'built in_function_or_method'对象不可下标'

问题描述

他们向我显示错误'built in_function_or_method'对象不可下标'在 products.append[name.text] 行中显示这些错误他们表明您的对象不可下标

from bs4 import BeautifulSoup
import requests
import pandas as pd
products=[]
review = []
ratings = []
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
    "Accept-Encoding": "gzip, deflate",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "DNT": "1",
    "Connection": "close",
    "Upgrade-Insecure-Requests": "1",
}
for page in range(1, 5):
    cookies = {'session': '17ab96bd8ffbe8ca58a78657a918558'}
    r = requests.get(
        "https://www.amazon.com/s?k=redmi&page=2&qid=1631528810&ref=sr_pg_={page}".format(
            page=page
        ),
        headers=headers,
        cookies =cookies
    )
    soup = BeautifulSoup(r.content, "lxml")
    for d in soup.select(".s-result-item[data-component-type='s-search-result']"):
        name=d.find('h2')
        if name is not None:
            products.append[name.text]
        else:
            products.append("-")

        rating = d.find("span", attrs={"class": "a-icon-alt"})
        if rating is not None:
            ratings.append(rating.text)
        else:
            ratings.append("-")

        reviews = d.find("span", class_="a-size-base")
        if reviews is not None and rating is not None:
            review.append(reviews.text)
        else:
            review.append("-")
    
df = pd.DataFrame({'Product Name':products,'Reviews':review,'Ratings':ratings})
df.to_csv(kns.csv)

标签: pythonweb-scrapingbeautifulsouppython-requests

解决方案


现在您的代码工作正常。有两件事是错误的:你必须用它(name.text)来摆脱你提到的错误。其次,您必须使用df.to_csv('kns.csv')而不是df.to_csv(kns.csv)表示缺少引号。

from bs4 import BeautifulSoup
import requests
import pandas as pd
products = []
review = []
ratings = []
headers = {
    "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:66.0) Gecko/20100101 Firefox/66.0",
    "Accept-Encoding": "gzip, deflate",
    "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
    "DNT": "1",
    "Connection": "close",
    "Upgrade-Insecure-Requests": "1",
}
for page in range(1, 5):
    cookies = {'session': '17ab96bd8ffbe8ca58a78657a918558'}
    r = requests.get(
        "https://www.amazon.com/s?k=redmi&page=2&qid=1631528810&ref=sr_pg_={page}".format(
            page=page
        ),
        headers=headers,
        cookies=cookies
    )
    soup = BeautifulSoup(r.content, "lxml")
    for d in soup.select(".s-result-item[data-component-type='s-search-result']"):
        name = d.find('h2')
        if name is not None:
            products.append(name.text)
        else:
            products.append("-")

        rating = d.find("span", attrs={"class": "a-icon-alt"})
        if rating is not None:
            ratings.append(rating.text)
        else:
            ratings.append("-")

        reviews = d.find("span", class_="a-size-base")
        if reviews is not None and rating is not None:
            review.append(reviews.text)
        else:
            review.append("-")

df = pd.DataFrame(
    {'Product Name': products, 'Reviews': review, 'Ratings': ratings})
df.to_csv('kns.csv')

推荐阅读