使用BeautifulSoup与requests时出现TypeError的问题排查
解决BeautifulSoup传入Response对象引发的TypeError问题
嘿,作为Python新手碰到这个问题太正常了,我来帮你快速搞定!
问题根源
你这里犯了一个很典型的小错误:requests.get()返回的是一个Response对象,而不是直接的HTML文本内容。BeautifulSoup需要的是字符串(或字节)形式的网页源码,当你直接把Response对象传给它时,它会尝试去获取这个对象的长度(len()),但Response对象本身并没有这个方法,所以就抛出了TypeError: object of type 'Response' has no len()这个错误。
修复代码
只需要把Response对象转换成网页文本内容就行,修改这一行:
soup = BeautifulSoup(thepage, "html.parser")
改成下面两种方式的任意一种:
- 使用
text属性(requests自动帮你解码后的字符串):soup = BeautifulSoup(thepage.text, "html.parser") - 使用
content属性(原始字节形式,适合需要手动处理编码的场景):soup = BeautifulSoup(thepage.content, "html.parser")
额外小提示
Response对象还包含很多有用的信息,比如thepage.status_code可以查看请求是否成功(200表示成功),thepage.headers能看到响应头信息,以后调试的时候可以用上这些。
测试一下修改后的代码,你应该就能正常打印出Twitter页面的title了!
内容的提问来源于stack exchange,提问作者Jcmoney1010
相关产品推荐
相关产品推荐

