使用BeautifulSoup遇TypeError:‘Response’对象无len()方法求解
解决BeautifulSoup触发TypeError: 对象无len()方法的问题
兄弟,太懂你这种跟着教程一步步来却踩坑的郁闷了!你碰到的这个错误根源其实特别简单——就是传错参数给BeautifulSoup了。
你看,requests.get()返回的是一个Response对象,它包含了请求状态、响应头这些信息,但并不是直接的HTML文本。而BeautifulSoup初始化的时候需要的是网页的HTML源码内容,你直接把Response对象扔给它,它会尝试调用len()方法来处理这个对象,自然就触发TypeError了。
给你修正后的代码,只需要加个.text就能搞定:
import requests from bs4 import BeautifulSoup http = requests.get("https://www.imdb.com/title/tt0366627/?ref_=nv_sr_1") # 重点:用http.text获取网页的HTML文本内容 soup = BeautifulSoup(http.text, 'lxml') print(soup)
另外给你个小建议,最好在处理响应前先判断请求是否成功,避免请求失败后后续代码报错:
import requests from bs4 import BeautifulSoup http = requests.get("https://www.imdb.com/title/tt0366627/?ref_=nv_sr_1") if http.status_code == 200: soup = BeautifulSoup(http.text, 'lxml') print(soup) else: print(f"请求失败,状态码:{http.status_code}")
内容的提问来源于stack exchange,提问作者Keith
相关产品推荐
相关产品推荐

