Итак, ранее у меня были некоторые проблемы с записью желаемой информации из списка в csv. Я получил некоторую помощь в SO и сумел сделать то, что хотел, учитывая следующий код:
import csv
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
# open target
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.exampleurl.com/facts')
# define xpath
def get_elements_by_xpath(driver, xpath):
return [entry.text for entry in driver.find_elements_by_xpath(xpath)]
# Xpaths
text_entries = [
("Fact 1", "//div[@class='fact' and contains(span, '')][1]"),
("Fact 2", "//div[@class='fact' and contains(span, '')][2]"),
]
# Print facts to csv
with open('facts.csv', 'a') as f:
csv_output = csv.writer(f)
entries = []
for name, xpath in text_entries:
entries.append(get_elements_by_xpath(driver, xpath))
csv_output.writerows(zip(*entries))
Но теперь я хотел бы использовать тот же код, но распечатать его в Gsheets. Я попытался решить ее, используя Pandas со следующим кодом (ниже):
import pygsheets
import pandas as pd
import csv
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.common.exceptions import NoSuchElementException
from webdriver_manager.chrome import ChromeDriverManager
# Open target
driver = webdriver.Chrome(ChromeDriverManager().install())
driver.get('https://www.exampleurl.com/facts')
# Define xpath
def get_elements_by_xpath(driver, xpath):
return [entry.text for entry in driver.find_elements_by_xpath(xpath)]
# Xpaths
text_entries = [
("Fact 1", "//div[@class='fact' and contains(span, '')][1]"),
("Fact 2", "//div[@class='fact' and contains(span, '')][2]"),
]
# Print facts to Gsheets
gc = pygsheets.authorize(service_file='/users/Username/desktop/map/filekey.json')
df = pd.DataFrame(entries)
sh = gc.open('apts')
wks = sh[0]
wks.set_dataframe(entries,(1,1))
Код выводит один факт для одного div (хотя есть два факта и сотни div, использующих один и тот же класс). Печать его в CSV дает мне ВСЕ факты, напечатанные соответствующим образом и правильные. Он также перезаписывает файл каждый раз, когда я делаю очистку вместо добавления новых строк в таблицу ...
Любая помощь или мысли будут оценены!