Python -Selenium: Как экспортировать список в CSV все в новых строках? - PullRequest
0 голосов
/ 28 мая 2020

Я использую Selenium для очистки людей, которые также задают вопросы и ответы в Google, и хочу экспортировать результаты (вопросы, ответы и URL) в файл csv, но я хочу, чтобы каждый из них был в разных строках.

Все идет хорошо Я даже могу распечатать все в разных строках, но при проверке вывода csv вопрос и ответ находятся в одной строке.

Мой код выглядит так:

from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.firefox.options import Options

from tqdm import tqdm 
from time import sleep

import itertools
import threading
import time
import sys
import csv
import pandas as pd 


query = "nflx"
clicks = 4

def search(query,clicks):
       with webdriver.Firefox() as driver:

            driver.get("https://www.google.com?hl=en")
            driver.find_element_by_xpath("//input[@aria-label='Search']").send_keys(query)
            driver.find_elements_by_xpath("/html/body/div/div[3]/form/div[2]/div[1]/div[3]/center/input[1]")
            searchbtn = driver.find_elements_by_xpath("//input[@aria-label='Google Search']")
            searchbtn[-1].click()

            #Questions with answers. Have to clean a little bit.

            paa = driver.find_elements_by_css_selector('div.related-question-pair')
            for i in range(clicks):
                paa[i].click()
                paa = driver.find_elements_by_css_selector('div.related-question-pair')
            list_paa = [] 
            for j in paa:
                    p = format(j.text)
                    print(p)
                    list_paa.append(p)

Для экспорта я пробовал это:

with open('file1.csv', 'w',newline='\n', encoding='utf-8') as file:
    writer = csv.writer(file)
    for row in list_paa:
        writer.writerow(zip(row))

А это:

#Tried this
df = pd.DataFrame(list_paa, columns=["colummn"])
df.to_csv('list.csv', index=False)                                     

Текущий вывод CSV при выполнении search(query,clicks):

Current CSV Output

Требуемый вывод CSV для всех вопросов

enter image description here

1 Ответ

1 голос
/ 28 мая 2020

Думаю, запуск for l oop для обработки данных и разделения их с помощью splitlines () был бы самым простым способом go about?

Например:

        list_paa = [] 
        for j in paa:
                p = format(j.text)

                p = p.splitlines()

                print(p)
                list_paa.append(p)

Я уверен, что есть еще кое-что, что можно добавить к этому примеру, чтобы он действительно работал так, как задумано, вы поняли:).

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