[英]BeautifulSoup Exception mid loop scraping HTML file
我正在嘗試為幾個變量抓取HTML文件的本地文件夾,但在循環進行到一半時出現異常。 例外是AttributeError: 'NoneType' object has no attribute '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-score meter
沒有div
,則soup.find('div', class_ = 'audience-score meter')
將返回None
。 后續的任何find
或contents
將導致AttributeError
一種解決方案是嘗試除此以外,然后將值設置為空字符串。
try:
audience_score = soup.find('div', class_ = 'audience-score meter').find('span').contents[0][:-1]
except AttributeError:
audience_score=""
對title
和num_audience_ratings
(兩個作業)都執行相同的操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.