Запись результатов скрипта Python в CSV - PullRequest
0 голосов
/ 26 апреля 2018

Я использую этот скребок для обзоров Amazon, который нашел на Github: https://github.com/philipperemy/amazon-reviews-scraper

        for review in reviews_list:
             rating = review.find(attrs={'data-hook': 'review-star-rating'}).attrs['class'][2].split('-')[-1]
             body = review.find(attrs={'data-hook': 'review-body'}).text
             date = review.find(attrs={'data-hook': 'review-date'}).text
             title = review.find(attrs={'data-hook': 'review-title'}).text

             logging.info('***********************************************')
             logging.info(title)
             logging.info(date)
             logging.info(rating)
             logging.info(body)
             logging.info('***********************************************\n')
             reviews.append({'title': title,
                             'rating': rating,
                             'body': body,
                             'product_id': product_id
                            })

              return reviews

Я хочу, чтобы эти результаты были отправлены в файл CSV. Но я только начинающий с Python, поэтому я не совсем уверен. Я использую Python в Windows.

С помощью Акшата я получил это, но не уверен, что это правильно:

        for review in reviews_list:
            rating = review.find(attrs={'data-hook': 'review-star-rating'}).attrs['class'][2].split('-')[-1]
            body = review.find(attrs={'data-hook': 'review-body'}).text
            date = review.find(attrs={'data-hook': 'review-date'}).text
            title = review.find(attrs={'data-hook': 'review-title'}).text

from csv import DictWriter

with open('results.csv', 'w') as csvfile:
    fieldnames = ['title', 'date', 'rating', 'body']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()

    for review in reviews: 
        writer.writerow(review)

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Помимо ошибки, указанной @ BoarGules . Я бы предложил вам изучить DictWriter из модуля CSV

from csv import DictWriter

with open('results.csv', 'w') as csvfile:
    fieldnames = ['title', 'date', 'rating', 'body']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()

    for review in reviews: 
        writer.writerow(review)
0 голосов
/ 26 апреля 2018

Ваша проблема здесь:

    writer.writerow(title, date, rating, body)

writerow ожидает последовательность.Сделайте это вместо:

    writer.writerow([title, date, rating, body])

Эта строка должна быть внутри цикла через reviews.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...