网上看了很多写入数据库的Pipeline写法,一般都要自己写SQL,另外,如果一个工程里有多个spider还要分别处理。我试了一下用sqlalchemy
和pandas
两个常用的库写,只要两行代码,非常简单!开始爬取数据时,会直接使用spider的name创建数据表写入数据。
下面是我写的一个例子:
from sqlalchemy import create_engine
import pandas as pd
class CarpricespiderPipeline(object):
def __init__(self):
# pip install pymysql
# pip install mysqlclient 未安装会报错
self.engine = create_engine('mysql://root:root@localhost:3306/carprice?charset=utf8', echo=False)
def process_item(self, item, spider):
# 用pandas读取item
df = pd.DataFrame([item,])
# 使用DataFrame的to_sql方法
df.to_sql(name=spider.name, con=self.engine, if_exists='append', index=None)
return item
网友评论