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

当前问题(已解决)

安装好了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数据库)