Очистка данных Python от кикстартера не работает после некоторой итерации - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь удалить данные с kickstarter, код работает, но выдает следующую ошибку на странице 15 (вы можете получить ошибку на другой странице, поскольку веб-страница является динамической):

Traceback (последний вызов был последним): файл "C: \ Users \ lenovo \ kick.py", строка 30, в csvwriter.writerow (строка) Файл "C: \ Users \ lenovo \ AppData \ Local \ Programs \ Python \ Python37 \ lib\ encodings \ cp1252.py ", строка 19, in encode return codecs.charmap_encode (input, self.errors, encoding_table) [0] UnicodeEncodeError: кодек 'charmap' не может кодировать символ '\ uff5c' в позиции 27: сопоставление символовна

В чем может быть проблема?Любое предложение?

from urllib.request import urlopen
from bs4 import BeautifulSoup
import json
import csv
KICKSTARTER_SEARCH_URL = "https://www.kickstarter.com/discover/advanced?category_id=16&sort=newest&seed=2502593&page={}"
DATA_FILE = "kickstarter.csv"
csvfile = open(DATA_FILE, 'w')
csvwriter = csv.writer(csvfile, delimiter=',')
page_start = 0
while True:
    url = KICKSTARTER_SEARCH_URL.format(page_start)
    print(url)
    response = urlopen(url)
    html = response.read()
    soup = BeautifulSoup(html, 'html.parser')
    project_details_divs = soup.findAll('div', {"class":"js-react-proj-card"})

    if len(project_details_divs) == 0:
        break;

    for div in project_details_divs:
        project = json.loads(div['data-project'])
        row = [project["id"],project["name"],project["goal"],project["pledged"]]
        csvwriter.writerow(row)

    page_start +=1

csvfile.close()

1 Ответ

0 голосов
/ 04 января 2019

Добавьте аргумент encoding к вашему открывателю.Я имею в виду, изменить

csvfile = open(DATA_FILE, 'w')

на

csvfile = open(DATA_FILE, 'w', encoding='utf-8')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...