Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

357
Vistas
insertar valores en la base de datos usando el conector mysql python, web scraping

Se supone que este código encuentra los primeros 20 auriculares del sitio y luego obtiene el nombre y el precio del artículo. Luego insértelos en la base de datos (en la tabla "proyecto").

 import requests from bs4 import BeautifulSoup import mysql.connector cnx=mysql.connector.connect(user="root",password='test',host='127.0.0.1',database='amirdb') cursor=cnx.cursor() response=requests.get(f"https://www.digikala.com/search/?q=headphone") soup=BeautifulSoup(response.text,"html.parser") container=soup.find("ul",{'class':'c-listing__items'}) item=container.find_all("div",{'class':'c-product-box__title'}) price=container.find_all("div",{'class':'c-price__value-wrapper'}) for num in range(20): cursor.execute('INSERT INTO project VALUES(%s,%s)',(item[num].text,price[num].text)) cnx.commit() cnx.close()

Cuando quiero insertarlos en mi base de datos (en la tabla "proyecto"), no funciona y sé que el problema está en esta parte de mi código:

 for num in range(20): cursor.execute('INSERT INTO project VALUES(%s,%s)',(item[num].text,price[num].text))

¿Cuál es el problema con esta parte del código anterior?

La estructura de la mesa:

 +----------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+--------------+------+-----+---------+-------+ | filename | varchar(100) | YES | | NULL | | | price | varchar(100) | YES | | NULL | | +----------+--------------+------+-----+---------+-------+

Tengo estos errores:

 Traceback (most recent call last): File "C:/Users/Administratör/PycharmProjects/untitled/venv/seventh.py", line 13, in <module> cursor.execute('INSERT INTO project VALUES(%s,%s)',(item[num].text,price[num].text)) File "C:\Users\Administratör\PycharmProjects\untitled\venv\lib\site-packages\mysql\connector\cursor.py", line 551, in execute self._handle_result(self._connection.cmd_query(stmt)) File "C:\Users\Administratör\PycharmProjects\untitled\venv\lib\site-packages\mysql\connector\connection.py", line 490, in cmd_query result = self._handle_result(self._send_cmd(ServerCmd.QUERY, query)) File "C:\Users\Administratör\PycharmProjects\untitled\venv\lib\site-packages\mysql\connector\connection.py", line 395, in _handle_result raise errors.get_exception(packet) mysql.connector.errors.DatabaseError: 1366 (HY000): Incorrect string value: '\xD9\x87\xD8\xAF\xD9\x81...' for column 'filename' at row 1
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Es causado por la codificación de la base de datos, modifique la codificación de la base de datos.

 ALTER TABLE project CONVERT TO CHARACTER SET utf8mb4;

Prueba esto.

 cursor.execute('INSERT INTO project VALUES(%s,%s)',(item[num].text,price[num].text))

Si no, publique la estructura de su proyecto de tabla.

over 4 years ago · Santiago Trujillo Denunciar

0

Prueba algo como a continuación. Supongo que funcionará.

 for container in soup.find_all(class_='c-product-box')[:20]: item_title = container.find(class_='c-product-box__title').get_text(strip=True) item_price = container.find(class_='c-price__value-wrapper').get_text(strip=True) cursor.execute('INSERT INTO project (item_header,price_header) VALUES (%s,%s)',(item_title,item_price)) cnx.commit() cnx.close()
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda