将爬取的数据存储到数据库

之前都是将数据存到了文档中或者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)

紧随上次的爬取马蜂窝用户信息的例子,不同的是我们将遍历获取的数据存储到数据库,看下效果:

将爬取的数据存储到数据库_第1张图片

在mysql数据库中建了个表userInfo,有三列,我们将获取的三项信息依次填进去,基本上就是这么原理~~我看有些大佬是将信息放到字典里,用key更加直观,我这里用的是列表,每一项是个元组,利用下标值就能都出来~

你可能感兴趣的:(python爬虫)