David Iracheta
David Iracheta

Reputation: 7

Python Selenium how to separate in a list the data from a variable

I am trying to do web scraping to the amazon deals page to obtain 4 data, (Title, sold by,% of sale, time remaining), but in my variables the results are not separated as a list, this prevents me from exporting this information into a csv / excel.

I'm just learning python and I'm very basic, an apology if my question is very basic

from selenium import webdriver
from lxml import html
from time import sleep

driver = webdriver.Chrome('c:/bin/chromedriver')

for page_nb in range(1, 2):
    driver.get('https://www.amazon.com.mx/gp/goldbox/ref=gbps_ftr_s-5_2c3b_page_' + str(page_nb) + '?gb_f_c2xvdC01=dealStates:AVAILABLE%252CWAITLIST%252CWAITLISTFULL%252CEXPIRED%252CSOLDOUT,dealTypes:LIGHTNING_DEAL,page:' + str(page_nb) + ',sortOrder:BY_SCORE,dealsPerPage:48&pf_rd_p=d8b66f14-9e78-4a85-b04f-327a0b562c3b&pf_rd_s=slot-5&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=AVDBXBAVVSXLQ&pf_rd_r=5YBFC04YTSW7FDETY9RQ&ie=UTF8')
    #driver.get('https://www.amazon.com.mx/gp/goldbox/ref=gbps_ftr_s-5_2c3b_dlt_DOTD?gb_f_c2xvdC01=dealStates:AVAILABLE%252CWAITLIST%252CWAITLISTFULL%252CEXPIRED%252CSOLDOUT,sortOrder:BY_SCORE,dealTypes:DEAL_OF_THE_DAY&pf_rd_p=d8b66f14-9e78-4a85-b04f-327a0b562c3b&pf_rd_s=slot-5&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=AVDBXBAVVSXLQ&pf_rd_r=7X916BEV4BAEXDRBPGG5&ie=UTF8')
    sleep(1)

    tree = html.fromstring(driver.page_source)

    for product_tree in tree.xpath('//div[contains(@id, "101_dealView_")]'):
        title = product_tree.xpath('//*[@id="dealTitle"]/span/text()')
        vendido = product_tree.xpath('//*[@id="shipSoldInfo"]/text()')
        apartado = product_tree.xpath('//*[@class="a-size-mini a-color-secondary inlineBlock unitLineHeight"]/text()')
        tventa = product_tree.xpath('//*[@role="timer"]/text()')
        
    print(title, vendido, apartado, tventa)

driver.close()

Upvotes: 0

Views: 140

Answers (1)

Arundeep Chohan
Arundeep Chohan

Reputation: 9969

You could append to a list. Also just use selenium instead of the whole tree aspect.

lst=[]
for page_nb in range(1, 2):
    driver.get('https://www.amazon.com.mx/gp/goldbox/ref=gbps_ftr_s-5_2c3b_page_' + str(page_nb) + '?gb_f_c2xvdC01=dealStates:AVAILABLE%252CWAITLIST%252CWAITLISTFULL%252CEXPIRED%252CSOLDOUT,dealTypes:LIGHTNING_DEAL,page:' + str(page_nb) + ',sortOrder:BY_SCORE,dealsPerPage:48&pf_rd_p=d8b66f14-9e78-4a85-b04f-327a0b562c3b&pf_rd_s=slot-5&pf_rd_t=701&pf_rd_i=gb_main&pf_rd_m=AVDBXBAVVSXLQ&pf_rd_r=5YBFC04YTSW7FDETY9RQ&ie=UTF8')
    time.sleep(5)
    for product_tree in driver.find_elements_by_xpath('//div[contains(@id, "101_dealView_")]'):
        title = product_tree.find_element_by_xpath('.//a[@id="dealTitle"]/span').text
        vendido = product_tree.find_element_by_xpath('.//span[@id="shipSoldInfo"]').text
        apartado = product_tree.find_element_by_xpath('.//span[@class="a-size-mini a-color-secondary inlineBlock unitLineHeight"]').text
        tventa = product_tree.find_element_by_xpath('.//span[@role="timer"]').text
        #print(title, vendido, apartado, tventa)
        lst.append([title, vendido, apartado, tventa])
        

Outputs

[['TECHVIDA Agitadores, Espumador de Leche, Mini Batidor Eléctrico ...',
  'Vendido por TECHVIDA y enviado por Amazon.',
  '82% apartadas',
  '6:07:47'],
 ['CoWalkers Accesorios para guitarra Accesorios de guitarra Acústica/E...',
  'Vendido por CoWalkers y enviado por Amazon.',
  '60% apartadas',
  '4:42:46'],
 ['CoWalkers Bolsa de Cintura táctica para Exteriores, portaherramienta...',
  'Vendido por CoWalkers y enviado por Amazon.',
  '61% apartadas',
  '5:07:46'],
 ['Lamicall Soporte Tablet Multiángulo',
  'Vendido por Lamicall Direct y enviado por Amazon.',
  '13% apartadas',
  '5:02:46'],
 ['Difusor de Aceites Esenciales - Pesoo Difusor Aromaterapia Difus...',
  'Vendido por Pesoo y enviado por Amazon.',
  '72% apartadas',
  '6:22:46'],
 ['VicTsing Adaptador de HDMI a VGA (1080P), Convertidor de Vídeo par...',
  'Vendido por VicTsingDirect y enviado por Amazon.',
  '40% apartadas',
  '4:57:45'],
 ['Reutilizable Nano Tape, TBONEEY Nano Cinta Adhesiva de Doble Car...',
  'Vendido por TBONEEY y enviado por Amazon.',
  '8% apartadas',
  '6:27:45'],
 ['Bolsa de Aseo de Viaje Colgante Organizador y Baño Dopp Higiene...',
  'Vendido por Lumbor37-MX y enviado por Amazon.',
  '34% apartadas',
  '5:42:45'],
 ['YOMYM Fidget Dodecagon –Juguete para Las Manos con 12 ...',
  'Vendido por DONGXUN y enviado por Amazon.',
  '16% apartadas',
  '4:12:44'],
 ['YOMYM Cabezal de ducha Lluvia de alta presión Cabezal de ducha ...',
  'Vendido por YOMYM y enviado por Amazon.',
  '40% apartadas',
  '5:12:44'],
 ['Cheelom Hormas Ensanchadoras de Zapatos Ajustable de 5 pares...',
  'Vendido por CMGB y enviado por Amazon.',
  '80% apartadas',
  '5:47:43'],
 ['CoWalkers Ejercitador de Mano,Bandas de resistencia para ...',
  'Vendido por CoWalkers y enviado por Amazon.',
  '59% apartadas',
  '5:22:43'],
 ['SEASKY Auriculares para Juegos,Auriculares para Juegos ...',
  'Vendido por GITHREE y enviado por Amazon.',
  '58% apartadas',
  '4:47:43'],
 ['Audífonos Gamer con Micrófono para PS4 Xbox One PC, Diadem...',
  'Vendido por Micolindun Global y enviado por Amazon.',
  '8% apartadas',
  '4:17:42'],
 ['Neewer Ajustable Escritorio Suspensión Soporte de Brazo de...',
  'Vendido por iphotoxx y enviado por Amazon.',
  '30% apartadas',
  '6:47:42'],
 ['VicTsing Mouse Pad con Reposa Muñecas, Alfombrilla de Ratón M...',
  'Vendido por VicTsingDirect y enviado por Amazon.',
  '8% apartadas',
  '5:12:42'],
 ['YOMYM Funda para Moto Cubierta de la Motocicleta 190T Oxford Imp...',
  'Vendido por YOMYM y enviado por Amazon.',
  '50% apartadas',
  '6:42:41'],
 ['SoundPEATS Audifonos Inalámbricos Bluetooth5.0, TrueF...',
  'Vendido por TekTek y enviado por Amazon.',
  '37% apartadas',
  '7:12:41'],
 ['SEASKY Webcam con micrófono,Video Cámara Web108...',
  'Vendido por GITHREE y enviado por Amazon.',
  '40% apartadas',
  '5:57:41'],
 ['ANNA TOSANI Dispensador de Agua Automático, Portátil USB ...',
  'Vendido por ANNA TOSANI y enviado por Amazon.',
  '12% apartadas',
  '6:32:41'],
 ['Neewer Chroma Key Verde Chroma Key Azul Fondo Plegable Fondo P...',
  'Vendido por Photo Guard y enviado por Amazon.',
  '26% apartadas',
  '7:02:41'],
 ['Jasonwell Base de construcción Juego de Construcción de Base ...',
  'Vendido por Jasonwell International y enviado por Amazon.',
  '60% apartadas',
  '5:37:41'],
 ['Cheelom Faucet Filtro de agua, Grifo de Filtro purificador de agua...',
  'Vendido por CMGB y enviado por Amazon.',
  '25% apartadas',
  '4:17:41'],
 ['Set de Manicure para Bebé, para cuidado e higiene de las uñas del ...',
  'Vendido por Beetbul y enviado por Amazon.',
  '10% apartadas',
  '6:17:40']]

And so forth

with open("Test.csv", "w", newline="") as f:
   writer = csv.writer(f)
   writer.writerows(lst)

Upvotes: 1

Related Questions