Я написал программу на языке python, чтобы очистить некоторые данные с сайта, а затем вставить их в базу данных. Я использую mysql .connector для подключения к базе данных. когда я запускал свой код, все было правильно перед вставкой данных. python дал мне ошибку. пожалуйста, помогите мне решить эту проблему. спасибо
требования для запуска:
- re библиотека
- bs4 библиотека
- mysql .connector библиотека
- запрашивает библиотеку
Мой Python код:
import re
import bs4
import mysql.connector
import requests
from os import system, name
def clear():
if name == 'nt':
_ = system('cls')
else:
_ = system('clear')
clear()
mydb = mysql.connector.connect(
host="localhost",
user="root",
password=""
)
mycursor = mydb.cursor()
mycursor.execute("CREATE DATABASE ny_db")
mydb.commit()
mydb = mysql.connector.connect(
host="localhost",
user="root",
password="",
database="ny_db"
)
mycursor = mydb.cursor()
mycursor.execute("CREATE TABLE Home (ba INT, bds INT, price INT)")
for x in range(5):
page_link = 'https://www.rew.ca/properties/areas/toronto-on/page/' + str(x)
request = requests.get(page_link).text
bs44 = bs4.BeautifulSoup(request , 'html.parser')
ba_ = bs44.find_all('ul' , attrs = {'class':'l-pipedlist'})
for i in ba_:
re_for_ba = re.findall(r'.*</li>\n<li>(.+)ba.*' , str(i))
for r in re_for_ba:
r = str(r)
r = r.strip()
r = int(r)
sql = "INSERT INTO Home (ba) VALUES (%s)"
val = (r)
mycursor.execute(sql, val)
mydb.commit()
bd_ = bs44.find_all('ul' , attrs = {'class':'l-pipedlist'})
for w in bd_:
re_for_bd = re.findall(r'.*\"l-pipedlist\"><li>(.*)bd' , str(w))
for e in re_for_bd:
e = str(e)
e = e.strip()
e = int(e)
sql = "INSERT INTO Home (bds) VALUES (%s)"
val = (e)
mycursor.execute(sql, val)
mydb.commit()
price_ = bs44.find_all('div' , attrs = {'class':'displaypanel-title hidden-xs'})
for t in price_:
re_for_price = re.findall(r'.*<div class=\"displaypanel-title hidden-xs\">\n\$(.*)\n</div>' , str(t))
for q in re_for_price:
q = str(q)
q = q.strip()
q = q.split(',')
q = ''.join(q)
q = int(q)
sql = "INSERT INTO Home (price) VALUES (%s)"
val = (q)
mycursor.execute(sql, val)
mydb.commit()
print('DONE!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!')