我一直试图让它工作,但继续获得相同的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)
答案 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代码,有两种方法:
直接打印文本/字符串格式
导入请求
来自bs4进口BeautifulSoup
http = requests.get(" https://www.imdb.com/title/tt6738136/?ref_=inth_ov_tt")
打印(http.text)
使用HTML
解析器
导入请求
来自bs4进口BeautifulSoup
http = requests.get(" https://www.imdb.com/title/tt6738136/?ref_=inth_ov_tt")
汤= BeautifulSoup(http.text,' lxml')
打印(汤)
最好使用BeautifulSoup
,因为使用此功能可以从HTML
中提取所需数据,以备不时之需