美文网首页
持久化存储-本地Excel文件及MySQL数据库

持久化存储-本地Excel文件及MySQL数据库

作者: 布衣夜行人 | 来源:发表于2022-02-24 07:18 被阅读0次
    当前问题(已解决)

    安装好了pymysql之后,在Anaconda Powershell Prompt中运行爬虫文件抓取。无报错提示
    然而点开Mysql数据库,亦未发现有数据储存。目前原因未知。

    具体情况

    piplines.py中的代码文件如下:

    from itemadapter import ItemAdapter
    import pandas as pd
    import pymysql
    
    
    class Project1Pipeline:
        def process_item(self, item, spider):
            title=item['title']
            date=pd.DataFrame({'文章标题':title})
            date.to_excel('D:\文章题目.xlsx',index=False)
            return item
    
    class store_to_Mysql:
       def process_item(self, item, spider):
           connect_item=pymysql.connect(host='localhost',user='root',password='wynews')
           youbiao=connect_item.cursor()
           data=[(a) for a in zip(item['title'])]
           print(data)
           try:
               sql="insert into wy(a) values (%s)"
               youbiao.executemany(sql,data)
               connect_item.commit()
           except:
               connect_item.rollback()
           return item
           youbiao.close()
           connect_item.close()
    
    问题解决说明

    原因已查明,如涉及到是MySQL数据库的问题,比如在数据库中创建的表名和Scrapy框架中的代码名不匹配。则在命令行窗口运行时,很多时候也不会有报错提示。

    正确的piplines.py中的代码文件如下;

    from itemadapter import ItemAdapter
    import pandas as pd
    import pymysql
    
    
    class Project1Pipeline:
        def process_item(self, item, spider):
            title=item['title']
            date=pd.DataFrame({'文章标题':title})
            date.to_excel('D:\文章题目.xlsx',index=False)
            return item
    
    class store_to_Mysql:
       def process_item(self, item, spider):
           connect_item=pymysql.connect(host='localhost',user='root',password='dd521!',database='wynews',charset='utf8')
           youbiao=connect_item.cursor()
           data=[(a) for a in zip(item['title'])]
           print(data)
           try:
               sql="insert into wynews(文章标题) values (%s)"
               youbiao.executemany(sql,data)
               connect_item.commit()
           except:
               connect_item.rollback()
           return item
           youbiao.close()
           connect_item.close()
    

    对应的MySQL数据库中表的结构如图所示:


    image.png

    备注:1)重点的代码为下述两句话:
    connect_item=pymysql.connect(host='localhost',user='root',password='dd521!',database='wynews',charset='utf8')
    2)这个是输入管理员秘密,及对应的数据库的名称-wynews
    try:
    sql="insert into wynews(文章标题) values (%s)"
    youbiao.executemany(sql,data)
    connect_item.commit()
    这个是将已获得的数据插入wynews(文章标题) ——名为wynews的表,其中的“文章标题”这一列之下。
    所以,都是一一对应且指定的。

    相关文章

      网友评论

          本文标题:持久化存储-本地Excel文件及MySQL数据库

          本文链接:https://www.haomeiwen.com/subject/evkolrtx.html