Как распечатать/экспортировать серию строк в csv через Panda из цикла очистки Selenium в Python ⇐ Python
-
Anonymous
Как распечатать/экспортировать серию строк в csv через Panda из цикла очистки Selenium в Python
Я новичок в Python, использую Selenium (+ Chrome) и Pandas для извлечения ряда строк с веб-сайта.
Приведенный ниже код начинается с входа на веб-страницу, создания списка перечисленных подстраниц (все имеют имя ссылки «Подробно»), их циклического просмотра и создания подсписка страниц (в соответствии со ссылками со знаком евро). , и просматривая их, чтобы получить ряд значений (building_name, Building_code и total_cost).
Структура сайта
Главная страница Деталь страницы 1 Страница €А название здания код_здания Общая стоимость Страница €Б Страница €C Деталь страницы 2 Страница €А Страница €Б Страница €C Детали страницы 3 Страница €А Страница €Б Страница €C Сейчас я спотыкаюсь о выводе этих значений в один фрейм данных с использованием Panda для экспорта в формате CSV.
скриншот с неверными данными
Как видите, данные неправильно ориентированы (название здания должно читаться как «Бунгало») и содержат только одну запись, хотя их должно быть несколько.
из веб-драйвера импорта селена из selenium.webdriver.common.by импортировать из selenium.webdriver.support.ui импортировать WebDriverWait из selenium.webdriver.support импортируйте ожидаемые_условия как EC время импорта импортировать повторно импортировать панд как pd #перейти на домашнюю страницу driver.get("http://example.com") # Подождите, пока загрузится новая страница после входа в систему WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, '__layout'))) # Найти все ссылки с текстом «Подробно» Detail_links = [x.get_attribute('href') для x в driver.find_elements(By.LINK_TEXT, 'Detail')] для URL подробно_ссылки: driver.get(url) WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, '__layout'))) # Найдите все ссылки, в сопроводительной текстовой метке которых есть знак евро. euro_links = [x.get_attribute('href') для x в driver.find_elements(By.XPATH, "//a[span[contains(text(), '€')]]")] для URL2 в euro_links: driver.get(url2) WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.ID, '__layout'))) # Получить строку стоимости здания total_cost = driver.find_element(By.XPATH, '//*[@id="app"]div/span').text # Получить название здания имя_здания = driver.find_element(By.XPATH,'//*[@id="app"]/li[7]/a').text # Получите идентификационный код здания по URL-адресу type_url = driver.find_element(By.XPATH,'//*[@id="app"]/li[7]/a').get_attribute("href") пытаться: Building_code = re.search('=(.+?)&', type_url).group(1) кроме AttributeError: # AAA, ZZZ не найдены в исходной строке Building_code = '' # примените обработку ошибок # Вывести название здания, код и общую стоимость в строку в кадре данных panda df = pd.DataFrame(list(zip(building_name, Building_code, total_cost)), columns=['Имя', 'Код', 'Общая стоимость']) печать (дф) драйвер.выйти() Я пробовал использовать CSV, но думаю, что с пандами работать намного проще.
Может ли кто-нибудь помочь мне правильно вывести эти зацикленные текстовые строки в фрейм данных pandas и экспортировать их в формате CSV?
Я новичок в Python, использую Selenium (+ Chrome) и Pandas для извлечения ряда строк с веб-сайта.
Приведенный ниже код начинается с входа на веб-страницу, создания списка перечисленных подстраниц (все имеют имя ссылки «Подробно»), их циклического просмотра и создания подсписка страниц (в соответствии со ссылками со знаком евро). , и просматривая их, чтобы получить ряд значений (building_name, Building_code и total_cost).
Структура сайта
Главная страница Деталь страницы 1 Страница €А название здания код_здания Общая стоимость Страница €Б Страница €C Деталь страницы 2 Страница €А Страница €Б Страница €C Детали страницы 3 Страница €А Страница €Б Страница €C Сейчас я спотыкаюсь о выводе этих значений в один фрейм данных с использованием Panda для экспорта в формате CSV.
скриншот с неверными данными
Как видите, данные неправильно ориентированы (название здания должно читаться как «Бунгало») и содержат только одну запись, хотя их должно быть несколько.
из веб-драйвера импорта селена из selenium.webdriver.common.by импортировать из selenium.webdriver.support.ui импортировать WebDriverWait из selenium.webdriver.support импортируйте ожидаемые_условия как EC время импорта импортировать повторно импортировать панд как pd #перейти на домашнюю страницу driver.get("http://example.com") # Подождите, пока загрузится новая страница после входа в систему WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, '__layout'))) # Найти все ссылки с текстом «Подробно» Detail_links = [x.get_attribute('href') для x в driver.find_elements(By.LINK_TEXT, 'Detail')] для URL подробно_ссылки: driver.get(url) WebDriverWait(driver, 5).until(EC.presence_of_element_located((By.ID, '__layout'))) # Найдите все ссылки, в сопроводительной текстовой метке которых есть знак евро. euro_links = [x.get_attribute('href') для x в driver.find_elements(By.XPATH, "//a[span[contains(text(), '€')]]")] для URL2 в euro_links: driver.get(url2) WebDriverWait(driver, 15).until(EC.presence_of_element_located((By.ID, '__layout'))) # Получить строку стоимости здания total_cost = driver.find_element(By.XPATH, '//*[@id="app"]div/span').text # Получить название здания имя_здания = driver.find_element(By.XPATH,'//*[@id="app"]/li[7]/a').text # Получите идентификационный код здания по URL-адресу type_url = driver.find_element(By.XPATH,'//*[@id="app"]/li[7]/a').get_attribute("href") пытаться: Building_code = re.search('=(.+?)&', type_url).group(1) кроме AttributeError: # AAA, ZZZ не найдены в исходной строке Building_code = '' # примените обработку ошибок # Вывести название здания, код и общую стоимость в строку в кадре данных panda df = pd.DataFrame(list(zip(building_name, Building_code, total_cost)), columns=['Имя', 'Код', 'Общая стоимость']) печать (дф) драйвер.выйти() Я пробовал использовать CSV, но думаю, что с пандами работать намного проще.
Может ли кто-нибудь помочь мне правильно вывести эти зацикленные текстовые строки в фрейм данных pandas и экспортировать их в формате CSV?