Python爬虫(8)selenium爬虫后数据,存入sqlit3实现增删改查

有目标就不怕路远。年轻人.无论你现在身在何方.重要的是你将要向何处去。只有明确的目标才能助你成功。没有目标的航船.任何方向的风对他来说都是逆风。因此,再遥远的旅程,只要有目标.就不怕路远。没有目标,哪来的劲头?一车尔尼雷夫斯基

导读:本篇文章讲解 Python爬虫(8)selenium爬虫后数据,存入sqlit3实现增删改查,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

在这里插入图片描述
之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章

本篇主要是以房地产的数据为主,主要就是要用爬虫爬取一个标题和房型、面积、具体地址、小区名这几个标签为主,然后将这些数据存入sqlit3数据库中
在这里插入图片描述

导入默认包和环境

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.by import By
import sqlite3
opt = ChromeOptions()            # 创建Chrome参数对象
opt.headless = True              # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
driver = Chrome(options=opt)     # 创建Chrome无界面对象
driver.get("房地产网站")

元素定位

由于只是进行单一的元素存储所以这里就直接用固定的xpath的定位

def sc():
    housename = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[1]/span').text
    houseaddress = driver.find_element(By.XPATH,'//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[2]/span').text
    housearea = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[3]').text
    print(housename,houseaddress,housearea)

在这里插入图片描述

创建一个sqlit3表

sql = 'create table house(housename_s varchar(100),' \
          'houseaddress_s varchar(100),housearea_s varchar(100))'

    try:
        cur.execute(sql)#将数据插入数据库
        con.commit() #提交事物
        print('插入成功')
    except Exception as e:
        print(e)
        print('插入失败')
        con.rollback() #回滚事物
    finally:
        #关闭游标
        cur.close()
        #关闭连接
        con.close()

在这里插入图片描述

将爬虫到的信息插入表中

#插入表
def into(ent):
    #连接sqlit3表
    con = sqlite3.connect('house.db')
    # 获取cursor对象
    cur = con.cursor()
    #将爬虫到的数据插入表
    sql = 'insert into house(housename_s,houseaddress_s,housearea_s) values(?,?,?)'
    try:
        cur.execute(sql,ent)#将数据插入数据库
        con.commit() #提交事物
        print('插入成功')
    except Exception as e:
        print(e)
        print('插入失败')
        con.rollback() #回滚事物
    finally:
        #关闭游标
        cur.close()
        #关闭连接
        con.close()

在if name == “main”:中调用def的名称即可如

sc()
在这里插入图片描述

删除表中信息

删除表
drop table table_name
判断表中是否存在信息
drop table if exists table_name
删除表内所有数据
DELETE FROM house;

#删除表中数据
def delete():
    #连接sqlit3表
    con = sqlite3.connect('house.db')
    delcon = con.cursor()
    try:
        delcon.execute('DROP table if exists house')
        con.commit()
        print('表删除成功')
    except Exception as e:
        print('表删除失败')

在这里插入图片描述

如果我们需要删除指定表中数据可以这样做

def delete():
    #连接sqlit3表
    con = sqlite3.connect('house1.db')
    delcon = con.cursor()
    try:
        delcon.execute('DELETE FROM house WHERE houseaddress_s = 1;')
        con.commit()
        print('表内数据删除成功')
    except Exception as e:
        print('表内数据删除失败')

修改表中信息

def update():
    #连接sqlit3表
    con = sqlite3.connect('house1.db')
    delcon = con.cursor()
    try:
        delcon.execute('UPDATE house SET housename_s = "万科" where housename_s = 1;')
        con.commit()
        print('表内数据更新成功')
    except Exception as e:
        print('表内数据更新失败')

查询表中信息

def update():
    #连接sqlit3表
    con = sqlite3.connect('house1.db')
    delcon = con.cursor()
    delcon.execute('select * from house ;')
    print(delcon.fetchone())#捕获查询

在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/134061.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!