python 爬数据传到MySQL上 (pycharm中显示传入成功,但是在数据库中找不到数据,全为空)

今天测试了一下用python爬数据传到MySQL上,我真的差点儿哇的哭出来了,天哪,弄了一天,它一直有一个错误,就是我传数据到MySQL上,只有自增列在增加,其他列全为null,(其他列都是中文),然后弄了半天编码格式,最后发现是SQL问题(在此之前我非常坚定我SQL没有问题的,因为拿到Navicat执行是可以执行的,只能说在python里写的传入数据的sql有一个地方需要非常注意)

我错误的添加数据的sql:

insert into foods(num,food_name,food_calorie,food_url)values(null,food_name,food_calorie,food_url)

value这里的food_name等是我爬网页获取的数据,是字符串类型,所以我直接那样写的

还有这里的num是自增列,自增列可以赋值为null

后来发现自增列可以不写!

insert into foods(food_name,food_calorie,food_url)values(food_name,food_calorie,food_url)

但这个代码还是有问题的!

正确的:(需要把插入数据和传入的值分开写!!)

insert into foods(food_name,food_calorie,food_url) values(%s,%s,%s)
value=(food_name,food_calorie,food_url)

还有一个地方,不管表里的数据类型是什么在insert into 那一行里的value 里面都写%S
只要下面的value括号里面的类型能跟表里的字段类型对应起来即可!!

完整的代码:

import pymysql
import time
import requests
from bs4 import BeautifulSoup


host='localhost'
user='root'
password='123456'
database='spider_test_bak'

try:
    db=pymysql.connect(host,user,password,database)
    print('数据库连接成功')
    time.sleep(1)
    #创建游标
    cursor=db.cursor()
    print('下面开始爬取网页数据')
    url = 'http://www.boohee.com/food/group/1'

    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36'
    }
    print('请求网页信息')
    res = requests.get(url, headers=headers)
    print('爬取状态:%s'%(res.status_code))
    soup = BeautifulSoup(res.text, 'html.parser')
    foods = soup.find_all('li', class_='item clearfix')
    time.sleep(1)
    for food in foods:
        food_name = food.find_all('a')[1]['title']
        food_calorie = food.find('p').text
        food_url = ('http://www.boohee.com/' + food.find('a')['href'])
        sql='insert into foods(food_name,food_calorie,food_url)value(%s,%s,%s)'
        value=(food_name,food_calorie,food_url)
        try :
            cursor.execute(sql,value)
            print('数据插入成功')
        except pymysql.Error as e:
            print('数据插入失败'+str(e))
    db.commit()

except pymysql.Error as e:
    print('数据库连接失败'+str(e))

db.close()

运行结果:
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值