簡體   English   中英

BeautifulSoup異常中循環抓取HTML文件

[英]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 后續的任何findcontents將導致AttributeError

一種解決方案是嘗試除此以外,然后將值設置為空字符串。

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

titlenum_audience_ratings (兩個作業)都執行相同的操作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM