Я изучаю webscraping через BeautifulSoup и Python.Мой первый проект - извлечь определенные рецепты из cookpad.hu.Мне удалось извлечь, но теперь у меня проблемы с записью их в файл (csv - это все, что я умею делать) из-за этой ошибки:
Traceback (последний вызовпоследнее): файл «cookpad_scrape.py», строка 24, в f.writerow (about_clean) UnicodeEncodeError: кодек «ascii» не может кодировать символ u '\ xe1' в позиции 0: порядковый номер не находится в диапазоне (128)
Мой код указан ниже.Я использую Python 2.7.14 на Ubuntu.Пастбин веб-страницы здесь , но сама веб-страница это .
Я предполагаю, что она не может писать венгерские буквы?Я уверен, что есть очень простое решение, которое я пропускаю.
import requests
from bs4 import BeautifulSoup
import csv
'''
Tree of page:
<div id="recipe main">
<div id="editor" class="editor">
<div id="about">
<section id="ingredients">
<section id="steps">
'''
#text only: soup.get_text()
page = requests.get('https://cookpad.com/hu/receptek/5040119-parazson-sult-padlizsankrem')
soup = BeautifulSoup(page.text, 'lxml')
f = csv.writer(open('recipes.csv', 'w')) #create and open file in f variable, using 'w' mode
f.writerow(['Recipe 1']) #write top row headings
about = soup.find(id='about')
about_ext = about.p.extract()
about_clean = about_ext.get_text()
f.writerow(about_clean)
ingredients = soup.find(id='ingredients')
ingredients_ext = ingredients.ol.extract()
ingredients_clean = ingredients_ext.find_all(itemprop='ingredients')
#for ingredient in ingredients_clean:
steps = soup.find(id='steps')
steps_p = steps.find_all(itemprop='recipeInstructions')
for step in steps_p:
extracted = step.p.extract()
print(extracted.text)
f.writerow([extracted])
Решение: Запустите сценарий, используя python3, а не 2 через python3 my_script.py
Новая проблема: экспорт сводокдает хорошие результаты для шагов, но ингредиенты и раздел имеют каждую букву, разделенную запятыми .