运行Python爬虫报'built_in_function_or_method'对象不可下标错误如何解决
错误原因及修复方案
1 直接报错的根因
你抛出'built in_function_or_method' object is not subscriptable的原因是误用了列表append方法的调用语法:append是列表的内置方法,调用时需要用圆括号包裹参数,你写的products.append[name.text]用了方括号,Python会把这当成是对append这个函数对象做下标取值操作,自然就报错了。
修复方式非常简单,把这一行的方括号改成圆括号即可:
products.append(name.text)
2 代码中其他隐藏的可修复问题
除了上述直接报错的问题,你的代码还有2个会导致后续运行出错/逻辑不符合预期的问题:
- 亚马逊搜索URL的分页参数写死了:你写的链接里固定是
page=2,就算循环page变量也只会一直爬第2页,需要把page=2改成page={page}才会正常走分页 - 保存CSV的文件名没有加引号:
df.to_csv(kns.csv)里的kns.csv是字符串字面量,需要用引号包裹,不然Python会把它当成未定义的变量抛出NameError,修改为df.to_csv("kns.csv")即可
修改后对应可正常运行的代码段
# 修正append调用 if name is not None: products.append(name.text) else: products.append("-") # 修正分页URL r = requests.get( "https://www.amazon.com/s?k=redmi&page={page}&qid=1631528810&ref=sr_pg_={page}".format( page=page ), headers=headers, cookies =cookies ) # 修正csv保存 df.to_csv("kns.csv")
内容的提问来源于stack exchange,提问作者Arslan Aziz
相关产品推荐
相关产品推荐

