bs4类型'响应'没有len()

时间:2018-05-14 06:59:28

标签: python

我一直试图让它工作,但继续获得相同的TypeError对象没有len()。 BeautifulSoup文档没有任何帮助。这似乎适用于我观看和阅读的每个教程,但不适合我。我做错了什么?

import requests
from bs4 import BeautifulSoup

http = requests.get("https://www.imdb.com/title/tt0366627/?ref_=nv_sr_1")

print(http)

这会返回Response [200],但是如果我尝试添加汤......我得到len错误:

import requests
from bs4 import BeautifulSoup

http = requests.get("https://www.imdb.com/title/tt0366627/?ref_=nv_sr_1")    
soup = BeautifulSoup(http, 'lxml')

print(soup)

3 个答案:

答案 0 :(得分:0)

正如the docs所说:

  

要解析文档,请将其传递给BeautifulSoup构造函数。您可以传入字符串或打开文件句柄:

Response对象既不是字符串也不是打开的文件句柄。

the requests docs中的第一个示例所示,获取两者之一的最简单方法是.text属性。所以:

http = requests.get("https://www.imdb.com/title/tt6738136/?ref_=inth_ov_tt")    
soup = BeautifulSoup(http.text, 'lxml')

对于其他选项,请参阅Response Content - 例如,您可以使用.content获取字节,让BeautifulSoup猜测编码而不是从标题中读取它,或者获取套接字(这是一个开放的filehandle).raw

答案 1 :(得分:0)

我的最终代码。它只打印出标题,年份和摘要,这就是我想要的。感谢大家的帮助。

import requests
import lxml
from bs4 import BeautifulSoup

http = requests.get("https://www.imdb.com/title/tt0366627/?ref_=nv_sr_1")    
soup = BeautifulSoup(http.content, 'lxml')

title = soup.find("div", class_="title_wrapper").find()
summary = soup.find(class_="summary_text")

print(title.text)
print(summary.text)

答案 2 :(得分:-1)

您从以下代码获得的Response-200:

import requests
from bs4 import BeautifulSoup    
http = requests.get("https://www.imdb.com/title/tt6738136/?ref_=inth_ov_tt")    
print(http)

显示您的请求已成功并返回响应。为了解析HTML代码,有两种方法:

  1. 直接打印文本/字符串格式

    导入请求
    来自bs4进口BeautifulSoup
    http = requests.get(" https://www.imdb.com/title/tt6738136/?ref_=inth_ov_tt")
    打印(http.text)

  2. 使用HTML解析器

    导入请求
    来自bs4进口BeautifulSoup
    http = requests.get(" https://www.imdb.com/title/tt6738136/?ref_=inth_ov_tt")
    汤= BeautifulSoup(http.text,' lxml')
    打印(汤)

  3. 最好使用BeautifulSoup,因为使用此功能可以从HTML中提取所需数据,以备不时之需