Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

435
Views
¿Por qué obtengo solo un elemento (en lugar de varios elementos) en una columna de pandas?

Aquí está mi código:

 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from selenium.webdriver.common.by import By import pandas as pd driver = webdriver.Chrome(service=Service(executable_path=ChromeDriverManager().install())) driver.maximize_window() driver.get('https://quotes.toscrape.com/') df = pd.DataFrame( { 'Quote': [''], 'Author': [''], 'Tags': [''], } ) quotes = driver.find_elements(By.CSS_SELECTOR, '.quote') for quote in quotes: text = quote.find_element(By.CSS_SELECTOR, '.text') author = quote.find_element(By.CSS_SELECTOR, '.author') tags = quote.find_elements(By.CSS_SELECTOR, '.tag') for tag in tags: quote_tag = tag df = df.append( { 'Quote': text.text, 'Author': author.text, 'Tags': quote_tag.text, }, ignore_index = True ) df.to_csv('C:/Users/Jay/Downloads/Python/!Learn/practice/scraping/selenium/quotes.csv', index=False)

Debería estar obteniendo este resultado:

Cita Autor Etiquetas
“El mundo tal como lo hemos creado es un proceso de nuestro pensamiento. No se puede cambiar sin cambiar nuestro pensamiento”. Albert Einstein cambiar pensamientos profundos mundo de pensamiento

En su lugar estoy recibiendo esto:

Cita Autor Etiquetas
“El mundo tal como lo hemos creado es un proceso de nuestro pensamiento. No se puede cambiar sin cambiar nuestro pensamiento”. Albert Einstein mundo

Obtengo solo el último elemento de la columna Tags en lugar de los cuatro elementos.

Si ejecuto:

 quotes = driver.find_elements(By.CSS_SELECTOR, '.quote') for quote in quotes: tags = quote.find_elements(By.CSS_SELECTOR, '.tag') for tag in tags: quote_tag = tag print(quote_tag.text)

Yo obtengo:

 change deep-thoughts thinking world etc

Así que ese trozo de código funciona.

¿Por qué la columna Tags no se completa correctamente?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

con tu codigo

 for tag in tags: quote_tag = tag

reemplaza quote_tag con tag en cada ejecución del ciclo for y, por lo tanto, anula el valor anterior almacenado en quote_tag . Por lo tanto, después de la última ejecución, quote_tag solo contiene la última etiqueta.

Tienes que hacer algo como

 quote_tag = '' for tag in tags: quote_tag += ' ' + tag

si desea concatenar todas las etiquetas juntas.

over 4 years ago · Santiago Trujillo Report

0

Para su ciclo, use este código:

 quote_tags = [] for tag in tags: quote_tags.append(tag.text) df = df.append( { 'Quote': text.text, 'Author': author.text, 'Tags': ' '.join(quote_tags), }, ignore_index = True )

Si nota, la única etiqueta que se agrega ( world ) resulta ser la última etiqueta... y eso no es una coincidencia. Es porque recorres las etiquetas y, para cada etiqueta, asignas esa etiqueta a la variable quote_tag , pero no haces nada con ella, por lo que la siguiente iteración del bucle simplemente sobrescribe el valor establecido por la iteración anterior. Finalmente, cuando termina el bucle, quote_tag tiene el valor de la última etiqueta.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!