python爬虫数据库存储存不进去

嘶 试了好几天了数据能爬取下来但是存不进数据库,跟没反应似的QAQ

 

# coding:utf-8
import requests
import pymysql
from lxml import html
k = 1
headers={
'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}
for i in range(10):
    url = 'https://movie.douban.com/top250?start={}&filter='.format(i*25)
    con = requests.get(url,headers=headers).content
    sel = html.fromstring(con)
    # 所有的信息都在class属性为info的div标签里,可以先把这个节点取出来 //*[@id="content"]/div/div[1]/ol
    for i in sel.xpath('//div[@class="info"]'):

        # 影片名称
        title = i.xpath('div[@class="hd"]/a/span[@class="title"]/text()')[0]
        #print(title)
        info = i.xpath('div[@class="bd"]/p[1]/text()')
        # 导演演员信息
        info_1 = info[0].replace(" ", "").replace("\n", "")
        # 上映日期
        date = info[1].replace(" ", "").replace("\n", "").split("/")[0]
        # 制片国家
        country = info[1].replace(" ", "").replace("\n", "").split("/")[1]
        # 影片类型
        geners = info[1].replace(" ", "").replace("\n", "").split("/")[2]
        # 评分
        rate = i.xpath('//span[@class="rating_num"]/text()')[0]
        # 评论人数
        comCount = i.xpath('//div[@class="star"]/span[4]/text()')[0]

        # 打印结果看看
        print ("TOP%s" % str(k))
        print( title, info_1, rate, date, country, geners, comCount )


        connection=''
        try:
            # 获取一个有效的数据库连接对象,此处填写你的数据库信息,特别注意charset一定要写成'utf8',不能写成'utf-8'。
            connection = pymysql.connect(host='localhost', port=3306,
                                         user='root', password='111',
                                         db='test', charset='utf8')
            if connection:
                print("[mysql]>>正确获取数据库的连接对象")

            # 创建一个游标对象
            curosr = connection.cursor()
            print('[mysql]正确获取游标对象')
            # 设置插入数据的sql语句模板
            sql = "insert into doubanmovie VALUES (null,'%d','%s','%s,','%s','%s','%s','%s')" % (k, title, rate, comCount, date, country, info_1)
            print('[mysql]>>%s' % sql)

            # 使用游标对象发送sql语句并将服务器结果返回
            affectedRows = curosr.execute(sql)
            msg = '[mysql]>>写入操作成功' if affectedRows > 0 else '[mysql]>>写入失败'
            print(msg)
            # 事务提交
            connection.commit()
            print("[mysql]>>事务提交")
        except:
            connection.rollback()
            print('[mysql]事务回滚')
        finally:
            # 关闭数据库连接
            connection.close()
            print("[mysql]>>关闭数据库连接")
            k += 1

新增失败肯定会报错呀,把错误信息发出来看看

 

您好,我是有问必答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题,可以追评进行沟通哦~

如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~

ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632

非常感谢您使用有问必答服务,为了后续更快速的帮您解决问题,现诚邀您参与有问必答体验反馈。您的建议将会运用到我们的产品优化中,希望能得到您的支持与协助!

速戳参与调研>>>https://t.csdnimg.cn/Kf0y