Python-BeautifulSoup: Как сохранить HTML в базу данных? - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь сохранить описание продукта в базе данных MySQL.До сих пор я пытался изменить тип данных на BLOB, LONGBLOB, TEXT, LONGTEXT, но он не работает.

    import bs4
from urllib.request import urlopen as uReq
from bs4 import BeautifulSoup as soup
import mysql.connector

cnx = mysql.connector.connect(user='root', password='Kradz579032!!',
                              host='127.0.0.1',
                              database='aliexpressapidb')
cursor = cnx.cursor()

add_data = ("INSERT INTO productdetails"
               "(description) "
               "VALUES (%s)")

my_url = 'https://www.aliexpress.com/item/Cheap-Necklace-Jewelry-Alloy-Men-Vintage-Personality-Pendant-Creativity-Simple-Accessories-Symbol-Necklace-Wholesale-Fashion/32879629913.html?spm=a2g01.11147086.layer-iabdzn.4.4a716140Ix00VA&scm=1007.16233.91830.0&scm_id=1007.16233.91830.0&scm-url=1007.16233.91830.0&pvid=acdbf117-c0fb-458f-b8a9-ea73bc0d174b'
uClient = uReq(my_url)
page_html = uClient.read()
uClient.close()
page_soup = soup(page_html, "html.parser")
description = page_soup.findAll("div", {"class": "ui-box-body"})
#print(description)
data_insert = description
cursor.execute(add_data, data_insert)




cnx.commit()

cursor.close()
cnx.close()

Продолжаю получать ошибку:

File "/Users/reezalaq/.conda/envs / untitled3 / lib / python3.6 / site-packages / mysql / connector / translation.py ", строка 160, в to_mysql, возвращают getattr (self," _ {0} _to_mysql ".format (type_name)) (значение) AttributeError: Объект 'MySQLConverter' не имеет атрибута '_tag_to_mysql' "тип MySQL" .format (type_name)) Ошибка типа: тег Python 'tag' не может быть преобразован в тип MySQL

Ответы [ 2 ]

0 голосов
/ 07 июня 2018

проблема решена путем преобразования html-данных в строку, как предложено @ MicahB.

tostring = str (data)

0 голосов
/ 06 июня 2018
description = page_soup.findAll("div", {"class": "ui-box-body"})

^ здесь findAll вернет список совпадающих тегов, но вам нужно передать строку cursor.execute ().Таким образом, вы должны получить строку из этих совпадающих тегов.Ниже может быть один из способов сделать это:

description = page_soup.findAll("div", {"class": "ui-box-body"})
data_insert = description[0].get_text()
cursor.execute(add_data, data_insert)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...