Я создаю базу данных и вставляю данные. наш бэкэнд-инженер сказал, что ему нужна колонка для сохранения целых статей в формате HTML. Но когда я вставляю данные, это выдает мне такую ошибку:
![enter image description here](https://i.stack.imgur.com/IAGpJ.png)
и я проверяю, откуда возникла ошибка, я нашел:
![enter image description here](https://i.stack.imgur.com/ihNyi.png)
похоже, что в этой части есть некоторые кавычки или знаки препинания, и одна и та же строка встречается несколько раз. И я использую функцию str()
, чтобы преобразовать форматированный текст HTML (используйте type()
, чтобы увидеть тип данных bs4.element.Tag
) в строку, но проблема все еще существует.
Описание моей базы данных:
('id', 'mediumint(9)', 'NO', 'PRI', None, 'auto_increment')
('weburl', 'varchar(200)', 'YES', '', None, '')
('picurl', 'varchar(200)', 'YES', '', None, '')
('headline', 'varchar(200)', 'YES', '', None, '')
('abstract', 'varchar(200)', 'YES', '', None, '')
('body', 'longtext', 'YES', '', None, '')
('formed', 'longtext', 'YES', '', None, '')
('term', 'varchar(50)', 'YES', '', None, '')
И функция, которую я использовал для сбора полного текста:
def GetBody(url,plain=False):
# Fetch the html file
response = urllib.request.urlopen(url)
html_doc = response.read()
# Parse the html file
soup = BeautifulSoup(html_doc, 'html.parser')
#find the article body
body = soup.find("section", {"name":"articleBody"})
if not plain:
return body
else:
text = ""
for p_tag in body.find_all('p'):
text = ' '.join([text,p_tag.text])
return text
И я импортирую данные этой функцией:
def InsertDatabase(section):
s = TopStoriesSearch(section)
count1 = 0
formed = []
while count1 < len(s):
# tr = GetBody(s[count1]['url'])
# formed.append(str(tr))
# count1 = count1 + 1
(I use this to convert HTML to string, or use the code below)
formed.append(GetBody(s[count1]['url']))
count1 = count1 + 1
и это моя функция вставки:
for each in overall(I save everything in this list named overall):
cur.execute('insert into topstories(formed) values("%s")' % (each["formed"]))
Какие-нибудь советы по решению проблемы?