当前问题(已解决)
安装好了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的表,其中的“文章标题”这一列之下。
所以,都是一一对应且指定的。
网友评论