Python 3 opens text files in the locale default encoding; if that encoding cannot handle the Unicode values you are trying to write to it, pick a different codec:
with open('result.csv', 'w', encoding='UTF-8', newline='') as f:
That'd encode any unicode strings to UTF-8 instead, an encoding which can handle all of the Unicode standard.
Note that the csv
module recommends you open files using newline=''
to prevent newline translation.
You also need to open the file just once, outside of the for
loop:
with open('result.csv', 'w') as f: # Just use 'w' mode in 3.x
fields = ('title', 'developer', 'developer_link', 'price', 'rating', 'reviewers',
'downloads', 'date_published', 'operating_system', 'content_rating',
'category')
w = csv.DictWriter(f, )
w.writeheader()
for div in soup.findAll( 'div', {'class' : 'details'} ):
#
# build app_details
#
w.writerow(app_details)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…