我从truecar.com中提取数据。这些信息包括不同汽车的价格和里程。现在,我想将这些信息插入到一个表中,但是我的代码无法创建一个表,只返回“价格”和“英里”,而不是它们的数字。我怎么才能解决这个问题?
这是我的代码:
import requests
from bs4 import BeautifulSoup
import mysql.connector
car=str(input())
ur='https://www.truecar.com/used-cars-for-sale/listings/'
url=ur+car
r=requests.get(url)
soup=BeautifulSoup(r.text,'html.parser')
data = []
for card in soup.select('[class="card-content vehicle-card-body order-3 vehicle-card-carousel-
body"]'):
price = card.select_one('[class="heading-3 margin-y-1 font-weight-bold"]').text
miles = card.select_one('div[class="d-flex w-100 justify-content-between"]').text
data.append({
'price':price,
'miles':miles
})
print(data)
cnx = mysql.connector.connect(user='root', password='',
host='127.0.0.1',
database='truecar')
cursor = cnx.cursor()
for price,miles in data:
cursor.execute("INSERT INTO car VALUES(\'%s\',\'%s\')"%(price,miles))
cnx.commit()
cnx.close()发布于 2022-08-18 05:30:04
如果您只执行以下代码:
price = 10
miles = 20
data = []
data.append({
'price':price,
'miles':miles
})
for price, miles in data:
print(price, miles)控制台上的输出将是price miles。因此,您访问的不是字典的值,而是键。因此,您不将键写入数据库,而不是写入值。工作的是以下代码:
price = 10
miles = 20
data = []
data.append({
'price':price,
'miles':miles
})
for entry in data:
print(entry["price"], entry["miles"])我认为还应该考虑Saqib的回答,因为添加数据到数据库中的列会减少复杂软件中的bug。
发布于 2022-08-18 05:32:32
如果您的表中有数据库中的表,则必须使用:
INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME) VALUES ('
Mac', 'Mohan', 20, 'M', 2000
)否则,需要创建新表,这意味着要执行以下操作:
sql ='''CREATE TABLE EMPLOYEE(
FIRST_NAME CHAR(20) NOT NULL,
LAST_NAME CHAR(20),
AGE INT,
SEX CHAR(1),
INCOME FLOAT
)我的建议是使用奥姆库。请参考这篇文章发表在SQLModel上。
https://stackoverflow.com/questions/73397649
复制相似问题