我正在尝试从趋势页面中删除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)
答案 0 :(得分:1)
AttributeError:“字节”对象没有属性“ findAll” 是因为在代码中您正在执行以下操作:
public static Exam load(String filename) throws IOException, ClassNotFoundException {
Exam result = null;
try (ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new FileInputStream(filename)))) {
result = (Exam) ois.readObject();
}
if (result != null) {
result.setGradeCount(new HashMap<>());
for (StudentGrade grade : result.getGrades()) {
Integer count = result.getGradeCount().get(grade.getGrade());
if (count == null) {
count = 1;
} else {
count++;
}
result.getGradeCount().put(grade.getGrade(), count);
}
}
return result;
}
}
正在发生的事情是,您正在通过编码字符串将 str 转换为 byte 。 编码用于使用选择的编码将 str 转换为字节。
永远不要在程序中使用 bytes 来操作。而是使用unicode sandwitch原理。读取时将 bytes 转换为 str ,用 str 进行处理,然后将 str 转换为 bytes 写入输出。
因此,只需在程序内部使用 str ,而不要使用 bytes ,
soup = BeautifulSoup(source, 'lxml').encode("utf-8")