之前都是将数据存到了文档中或者excel中(排版很不好,稍后研究一下),今天尝试一下对数据库的操作……
先上代码吧:
class Mysql_Exe():
def _getconn(self):
try:
self.conn=pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='mysql',charset='utf8')
except pymysql.Error as e:
print(e,'数据库连接失败')
def _closeconn(self):
try:
if self.conn:
self.conn.close()
except pymysql.Error as e:
print(e,'关闭数据库连接失败')
def insertData(self,item):
sql='insert into userInfo value(%s,%s,%s)'
try:
self._getconn()
cursor=self.conn.cursor() #获取cursor对象
cursor.execute(sql,(item[0],item[1],item[2])) #预处理并执行数据库操作
self.conn.commit() #提交所有操作到数据库
print('success')
except pymysql.DataError as e:
print(e)
self.conn.rollback() #回滚至初态
finally:
if cursor:
cursor.close()
self._closeconn()
这个是我们的主类,也就是对数据库的一系列操作,看着很麻烦,不过关键的代码不多,其余的都是异常捕获什么的,精简一下就是这样:
class Mysql_Exe():
def _getconn(self):
self.conn=pymysql.connect(host='127.0.0.1',user='root',passwd='123456',port=3306,db='mysql',charset='utf8')
def insertData(self,item):
sql='insert into userInfo value(%s,%s,%s)'
self._getconn()
cursor=self.conn.cursor() #获取cursor对象
cursor.execute(sql,(item[0],item[1],item[2])) #预处理并执行数据库操作
self.conn.commit() #提交所有操作到数据库
关键代码只有以上一小部分,有部分注释,应该没啥难度,都是套路。。
然后就是具体执行了,看一下:
pattern=r'(.*?).*? '
items=re.compile(pattern,re.S|re.M).findall(ht2)
for item in items:
con=Mysql_Exe()
con.insertData(item)
紧随上次的爬取马蜂窝用户信息的例子,不同的是我们将遍历获取的数据存储到数据库,看下效果:
在mysql数据库中建了个表userInfo,有三列,我们将获取的三项信息依次填进去,基本上就是这么原理~~我看有些大佬是将信息放到字典里,用key更加直观,我这里用的是列表,每一项是个元组,利用下标值就能都出来~