Why AttributeError: 'bytes' object has no attribute 'findAll'
Why AttributeError: 'bytes' object has no attribute 'findAll'
我正在尝试从趋势页面中抓取 YouTube 数据。出现错误
from bs4 import BeautifulSoup
import requests
import csv
source = requests.get("https://www.youtube.com/feed/trending").text
soup = BeautifulSoup(source, 'lxml').encode("utf-8")
csv_file = open('YouTube.csv','w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['Title', 'Description'])
for content in soup.findAll('div', class_= "yt-lockup-content"):
#for content in soup.find_all('div', class_= "yt-lockup-content"):
print (content)
AttributeError: 'bytes' object has no attribute 'findAll' 是因为在你的代码中你正在做:
soup = BeautifulSoup(source, 'lxml').encode("utf-8")
发生的事情是,您正在通过编码字符串将 str 转换为 byte。 encode 用于使用选择的编码将 str 转换为 bytes。
永远不要在程序中使用 bytes 进行操作。而是使用 unicode 三明治原理。这是在读取时将 bytes 转换为 str,用 str 做一些事情,然后转换 str 到 bytes 写入输出。
所以只用程序里面的str,而不是像bytes,
soup = BeautifulSoup(source, 'lxml')
我正在尝试从趋势页面中抓取 YouTube 数据。出现错误
from bs4 import BeautifulSoup
import requests
import csv
source = requests.get("https://www.youtube.com/feed/trending").text
soup = BeautifulSoup(source, 'lxml').encode("utf-8")
csv_file = open('YouTube.csv','w')
csv_writer = csv.writer(csv_file)
csv_writer.writerow(['Title', 'Description'])
for content in soup.findAll('div', class_= "yt-lockup-content"):
#for content in soup.find_all('div', class_= "yt-lockup-content"):
print (content)
AttributeError: 'bytes' object has no attribute 'findAll' 是因为在你的代码中你正在做:
soup = BeautifulSoup(source, 'lxml').encode("utf-8")
发生的事情是,您正在通过编码字符串将 str 转换为 byte。 encode 用于使用选择的编码将 str 转换为 bytes。
永远不要在程序中使用 bytes 进行操作。而是使用 unicode 三明治原理。这是在读取时将 bytes 转换为 str,用 str 做一些事情,然后转换 str 到 bytes 写入输出。
所以只用程序里面的str,而不是像bytes,
soup = BeautifulSoup(source, 'lxml')