Я изучаю утилизацию, используя скрап. С удовольствием с ним. Единственная проблема в том, что я не могу сохранить скопированные данные так, как я хочу.
Приведенный ниже код очищает отзывы от Amazon. Как сделать хранение данных лучше?
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
import csv
class Oneplus6Spider(scrapy.Spider):
name = 'oneplus6'
allowed_domains = ['amazon.in']
start_urls = ['https://www.amazon.in/OnePlus-Silk-White-128GB-
Storage/product-reviews/B078BNQ2ZS/ref=cm_cr_arp_d_viewopt_sr?
ie=UTF8&reviewerType=all_reviews&filterByStar=positive&pageNumber=1']
def parse(self, response):
writer = csv.writer(open('jack.csv','w+'))
opinions = response.xpath('//*[@class="a-size-base a-link-normal
review-title a-color-base a-text-bold"]/text()').extract()
for opinion in opinions:
yield({'Opinion':opinion})
reviewers = response.xpath('//*[@class="a-size-base a-link-normal
author"]/text()').extract()
for reviewer in reviewers:
yield({'Reviewer':reviewer})
verified = response.xpath('//*[@class="a-size-mini a-color-state a-
text-bold"]/text()').extract()
for verified_buyer in verified:
yield({'Verified_buyer':verified_buyer})
ratings = response.xpath('//span[@class="a-icon-
alt"]/text()').extract()
for rating in ratings:
yield({'Rating':rating[0]})
model_bought = response.xpath('//a[@class="a-size-mini a-link-
normal a-color-secondary"]/text()').extract()
for model in model_bought:
yield({'Model':model})
Я пытался использовать метод scrapy по умолчанию -o , а также пытался использовать csv.
Данные хранятся в одной строке. Я очень плохо знаком с модулями pandas и csv, и я не могу понять, как хранить удаленные данные в правильном формате?
Хранит все значения в одной строке.
Я хочу разные значения в разных строках
Например: Отзывы | Рейтинг | Модель |
но я просто не могу понять, как это сделать
Как я могу это сделать?