gpt4 book ai didi

python - BeautifulSoup 异常中循环抓取 HTML 文件

转载 作者:行者123 更新时间:2023-12-01 01:15:27 25 4
gpt4 key购买 nike

我正在尝试从 HTML 文件的本地文件夹中获取几个变量,但在循环进行到一半时出现异常。异常(exception)情况是 AttributeError:“NoneType”对象没有属性“contents”。它实际上不是 .contents 我查看了它挂起的文件,它的结构与其他文件完全相同。如果删除 .contents 那么您只需使用 find() 函数引发相同的异常。有谁知道为什么会发生这种情况?同样,许多文件处理都没有问题。我的代码如下:

df_list = []
folder = 'rt_html'
for movie_html in os.listdir(folder):
with open(os.path.join(folder, movie_html)) as file:
soup = BeautifulSoup(file)
title = soup.find('title').contents[0][:-len(' - Rotten Tomatoes')]
audience_score = soup.find('div', class_ = 'audience-score meter').find('span').contents[0][:-1]
num_audience_ratings = soup.find('div', class_ = 'audience-info hidden-xs superPageFontColor')
num_audience_ratings = num_audience_ratings.find_all('div') [1].contents[2].strip().replace(',', '')


# print(num_audience_ratings)
# break

df_list.append({'title': title,
'audience_score': int(audience_score),
'number_of_audience_ratings': int(num_audience_ratings)})
df = pd.DataFrame(df_list, columns = ['title', 'audience_score', 'number_of_audience_ratings'])

最佳答案

我的猜测是某些文件不具有您正在查找的属性。

例如。

 audience_score = soup.find('div', class_ = 'audience-score meter').find('span').contents[0][:-1]

如果没有带有 audience-scoremeter 类的 div,则 soup.find('div', class_ = 'audience-scoremeter') 将返回 None 。任何后续的 findcontents 都会导致 AttributeError

解决方案是尝试排除此并将值设置为空字符串。

try:    
audience_score = soup.find('div', class_ = 'audience-score meter').find('span').contents[0][:-1]
except AttributeError:
audience_score=""

titlenum_audience_ ratings(两项分配)执行相同的操作

关于python - BeautifulSoup 异常中循环抓取 HTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54392666/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com