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

news2024/10/5 23:27:49

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

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

  • 导入默认包和环境
  • 元素定位
  • 创建一个sqlit3表
  • 将爬虫到的信息插入表中
  • 在if __name__ == "__main__":中调用def的名称即可如
  • 删除表中信息
    • 如果我们需要删除指定表中数据可以这样做
  • 修改表中信息
  • 查询表中信息

本篇主要是以房地产的数据为主,主要就是要用爬虫爬取一个标题和房型、面积、具体地址、小区名这几个标签为主,然后将这些数据存入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())#捕获查询

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/360396.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

知识蒸馏综述笔记

知识蒸馏的目的 将学习能力强的复杂教师模型中的“知识”迁移到简单的学生模型中 1.知识蒸馏的背景知识 2.解释知识蒸馏的作用机制 3.归纳知识蒸馏中知识的不同形式 4.详细分析和对比了知识蒸馏的各种关键方法, 5.介绍知识蒸馏与其它技术融合、 6.对知识蒸馏…

VirtualBox 安装 CentOS 换成 Rocky Linux

1.下载 VirtualBox并安装https://www.virtualbox.org/wiki/Downloads2.下载Rocky Linux选择 Rocky-9.1-x86_64-dvd.iso 镜像 官网https://rockylinux.org/download阿里云镜像服务https://mirrors.aliyun.com/rockylinux/9.1/isos/x86_64/?spma2c6h.25603864.0.0.70c556799nMQL…

设计模式看 Spring。

设计模式看 Spring。 文章目录设计模式看 Spring。自定义 Spring 框架。7.1 Spring 使用回顾。7.2 Spring 核心功能结构。7.1.1 bean 概述。7.3 Spring IoC 相关接口分析。7.3.1 BeanFactory 解析。7.3.2 BeanDefinition 解析。7.3.3 BeanDefinitionReader 解析。7.3.4 BeanDef…

论文阅读 | Video Frame Synthesis using Deep Voxel Flow

前言: 视频帧生成方法(视频插帧/视频预测)ICCV2017 oral Video Frame Synthesis using Deep Voxel Flow 引言 当下进行视频帧合成的方法分为两种,第一种是光流法,光流准确的话效果好,光流不准确的话则生…

手摸手,带你实现3D粒子特效

文章摘要:某天,产品小姐姐找到我,要在页面上放一个动态3D模型…不会webGL?没关系!今天就来聊一聊如何用从零实现3D粒子特效。 背景 近年来,随着互联网的迅速发展,用户对产品的视觉效果需求也更…

内网渗透(四十六)之横向移动篇-使用系统漏洞ms17010横向移动

系列文章第一章节之基础知识篇 内网渗透(一)之基础知识-内网渗透介绍和概述 内网渗透(二)之基础知识-工作组介绍 内网渗透(三)之基础知识-域环境的介绍和优点 内网渗透(四)之基础知识-搭建域环境 内网渗透(五)之基础知识-Active Directory活动目录介绍和使用 内网渗透(六)之基…

leaflet 加载geojson数据,随机显示不同颜色的circleMarker

第086个 点击查看专栏目录 本示例的目的是介绍演示如何在vue+leaflet项目中加载geojson数据,随机显示不同颜色的circleMarker. 直接复制下面的 vue+leaflet源代码,操作2分钟即可运行实现效果 文章目录 示例效果配置方式示例源代码(共89行)相关API专栏目标示例效果 配置方式…

时间序列数据预测的类型

本文主要内容是使用LSTM网络进行不同类型的时间序列预测任务,不涉及代码,仅仅就不同类型的预测任务和数据划分进行说明。 参考文章:https://machinelearningmastery.com/how-to-develop-lstm-models-for-time-series-forecasting/ 注&#xf…

如何使用Hugo Academic Theme构建自己的github主页

前期条件 自己已经注册好GitHub 原文档:https://wowchemy.com/docs/getting-started/hugo-github-quickstart/ 搜索Hugo Academic Theme(网址) 进入后的网址为:https://academic-demo.netlify.app/ 点击Get Start 出现如下模板…

【观察】昇腾加速AI“走深向实”,打通落地“最后一公里”

毫无疑问,今天AI正与产业结合得越来越紧密,从智能制造,到智慧医疗,智慧金融、智慧城市等,AI已经开始渗透到我们生活的方方面面,即便是目前来自传统行业用户的AI转型需求尚未完全激活爆发,但仅仅…

利用组件注解符精简Spring配置文件

文章目录利用组件注解符精简Spring配置文件一、利用组件注解精简Spring配置文件1、创建新包2、将4个类给拷贝过去3、修改杀龙任务类4、修改救美任务类5、修改勇敢骑士类6、修改救美骑士类7、创建Spring配置文件利用组件注解符精简Spring配置文件 一、利用组件注解精简Spring配…

什么是生命周期?Activity生命周期的三种状态

什么是生命周期生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态,分别是运行状态、暂停状态和停止状态。接下来将针对Activity生命周…

【自动化测试】自动化测试框架那些事儿

无论是在自动化测试实践,还是日常交流中,经常听到一个词:框架。在教学的过程中,同学们一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料,加上一些实践,算是对“框架”有了一些理解…

JVM13 类的生命周期

1. 概述 在 Java 中数据类型分为基本数据类型和引用数据类型。基本数据类型由虚拟机预先定义,引用数据类型则需要进行类的加载。 按照 Java 虚拟机规范,从 class 文件到加载到内存中的类,到类卸载出内存为止,它的整个生命周期包…

本地代码推送到Coding

话不多说,开门见山 一、coding准备 注册啊,建项目,这些就不用多说了。 1.创建一个代码仓库 填一下名称和描述就行,其他先不用填,然后点最下面完成创建就行。 2.保存代码仓库地址 二、本地代码仓库准备 已经是在…

Linux 忘记密码解决方法

很多朋友经常会忘记Linux系统的root密码,linux系统忘记root密码的情况该怎么办呢?重新安装系统吗?当然不用!进入单用户模式更改一下root密码即可。 步骤如下: 重启linux系统 3 秒之内要按一下回车,出现如…

Web前端:什么是Vue Native 框架?有什么特点?

Vue Native是一个使用Vue.Js开发本地移动应用程序的框架。该框架将文档转换为React Native,进而为你提供适用于Android和iOS的本地应用程序。实际上,Vue Native应用程序据说是React API的包装。Vue将Vue.js和React结合在一起,让你的开发团队充…

【牛客刷题专栏】0x0C:JZ4 二维数组中的查找(C语言编程题)

前言 个人推荐在牛客网刷题(点击可以跳转),它登陆后会保存刷题记录进度,重新登录时写过的题目代码不会丢失。个人刷题练习系列专栏:个人CSDN牛客刷题专栏。 题目来自:牛客/题库 / 在线编程 / 剑指offer: 目录前言问题…

Django框架之模板过滤器

过滤器 语法如下: 使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。如果过滤器需要参数,则使用冒号:传递参数。 变量|过滤器:参数列举几个如下: safe,禁用转义,告诉模板这个变…

大数据Hadoop教程-01大数据导论与Linux基础

目录 01、大数据导论 02、Linux操作系统概述 P007 P008 P009 P010 P011 P012 P013 P014 P015 P016 P017 01、大数据导论 企业数据分析方向 现状分析(分析当下的数据):现阶段的整体情况,各个部分的构成占比、发展、变…