Python爬虫(10)selenium爬虫后数据,存入csv、txt并将存入数据并对数据进行查询

news/2025/2/14 15:22:23/

在这里插入图片描述
之前的文章有关于更多操作方式详细解答,本篇基于前面的知识点进行操作,如果不了解可以先看之前的文章
Python爬虫(1)一次性搞定Selenium(新版)8种find_element元素定位方式
Python爬虫(2)-Selenium控制浏览器
Python爬虫(3)-Selenium结合pywin32模拟键盘操作
Python爬虫(4)-Selenium模拟鼠标操作
Python爬虫(5)-selenium用显式等待、隐式等待、强制等待,解决反复爬取网页时无法定位元素问题
Python爬虫(6)-selenium用requests、wget、urllib3这3种方法搞定图片和PDF文件下载
Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题

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

Python爬虫(10)selenium爬虫后数据,存入csv、txt并将存入数据提取存入另一个文件

  • 存入csv
    • python自带方法
      • 完整代码
    • pandas方式查询文件
  • 存入txt
    • python自带方法
    • pandas方式查询文件

本篇继续引用之前爬取房地产的信息作为存入的数据来源

from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.by import By
opt = ChromeOptions()            # 创建Chrome参数对象
opt.headless = True              # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
driver = Chrome(options=opt)     # 创建Chrome无界面对象
driver.get("https://hui.fang.anjuke.com/loupan/all/a1_m94-95_o8_w1_z3/")
def sc():housename = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[1]/span').texthouseaddress = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[2]/span').texthousearea = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[3]').text#连接数据库,如果数据库中没有相应的数据库名称会自动创建一个print(housename,houseaddress,housearea)if __name__ == "__main__":sc()

在这里插入图片描述
在写入之前需要学习python的不同模式打开文件的方式,这个非常有用

模式描述
r只读方法打开文件,默认模式,无法对文件进行修改和添加
rb二进制打开一个文件以只读模式
r+打开一个文件用于读写
rb+以二进制格式打开一个文件用户读写
w以二进制格式打开文件用于写入,如果存在就打开文件,不然就从头开始编辑,原有内容删除,如果文件不存在就自动创建新文件
w+打开一个文件用于读写,如果文件存在就打开文件,从头开始编辑,原有内容删除,如果文件不存在就创建新文件
wb+以二进制格式打开,如果文件存在就打开,原有内容删除,文件不存在则创建
a追加模式,新内容追加到原有内容之后,文件不存在则创建新文件
ab以二进制模式追加,如果文件存在
a+打开一个文件用于读写,如果文件存在,在原有内容追加内容进去,不存在就创建新内容用于读写
ab+以二进制格式打开一个文件用于追加,如果文件存在则将文件放于结尾追加内容,不存在创建新文件用于读写

更多具体的操作方式看下面这篇文章
Python3 输入和输出

存入csv

python自带方法

由于我需要爬虫后写入所以需要选择以a+模式打开文件并进行写入操作

#用a+模式创建csv文件并写入f = open('house.csv', 'a+', encoding='utf-8')#基于文件对象构建csv写入csv_a = csv.writer(f)#将数据写入csv_a.writerow([housename,houseaddress,housearea])#关闭文件f.close()

在这里插入图片描述

完整代码

import csv
from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.by import By
opt = ChromeOptions()            # 创建Chrome参数对象
opt.headless = True              # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
driver = Chrome(options=opt)     # 创建Chrome无界面对象
driver.get("https://hui.fang.anjuke.com/loupan/all/a1_m94-95_o8_w1_z3/")
def sc():housename = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[1]/span').texthouseaddress = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[2]/span').texthousearea = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[3]').text#连接数据库,如果数据库中没有相应的数据库名称会自动创建一个print(housename,houseaddress,housearea)#用a+模式创建csv文件并写入f = open('house.csv', 'a+', encoding='utf-8')#基于文件对象构建csv写入csv_a = csv.writer(f)#将数据写入csv_a.writerow([housename,houseaddress,housearea])#关闭文件f.close()if __name__ == "__main__":sc()

pandas方式查询文件

这种方法是一次性显示所有的csv里面的内容,如果要将信息单次一条一条插入进行爬虫,就可以用for循环

import pandas as pd#导入pandas
df = pd.read_csv("house.csv", encoding='utf-8')print(df)

在这里插入图片描述

存入txt

python自带方法

#打开txt文件以a+模式写入sctxt = open('house.txt',mode='a+', encoding="utf-8")#将爬虫后的文件写入sctxt.writelines([housename,houseaddress,housearea])#关闭文件sctxt.close()

在这里插入图片描述
完整代码

import csv
import pandas as pd
from selenium.webdriver import Chrome, ChromeOptions
from selenium.webdriver.common.by import By
opt = ChromeOptions()            # 创建Chrome参数对象
opt.headless = True              # 把Chrome设置成可视化无界面模式,windows/Linux 皆可
driver = Chrome(options=opt)     # 创建Chrome无界面对象
driver.get("https://hui.fang.anjuke.com/loupan/all/a1_m94-95_o8_w1_z3/")
def sc():housename = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[1]/span').texthouseaddress = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[2]/span').texthousearea = driver.find_element(By.XPATH, '//*[@id="container"]/div[2]/div[1]/div[3]/div[1]/div/a[3]').text#连接数据库,如果数据库中没有相应的数据库名称会自动创建一个print(housename,houseaddress,housearea)#打开txt文件以a+模式写入sctxt = open('house.txt',mode='a+', encoding="utf-8")#将爬虫后的文件写入sctxt.writelines([housename,houseaddress,housearea])#关闭文件sctxt.close()
if __name__ == "__main__":sc()

pandas方式查询文件

df = pd.read_csv("house.txt", encoding='utf-8')print(df)

在这里插入图片描述
在这里插入图片描述


http://www.ppmy.cn/news/26990.html

相关文章

算法比赛——必备的数论知识

秋名山码民的主页 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 🙏作者水平有限,如发现错误,还请私信或者评论区留言! 目录一、欧几里得二、扩展欧几里得三、算术基本定理四、线性筛选求质数五…

【Linux】简介以及安装(一)

目录 1. 前言 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2. Linux简介 2.1 主流操作系统 2.2 Linux发展历史 2.3 Linux系统版本 3. Linux安装 3.1 安装方式介绍 3.2 安装VMware 3.3 安装Linux 3.4 网卡设置 3.5 安装SSH连接工具 3.6 Linux目…

centos7 搭建ELK(elasticsearch、logstash、kibana)

1、下载安装包 使用华为镜像站下载速度很快,华为镜像站:https://mirrors.huaweicloud.com/home,下载时需要保证版本一致 2、安装elasticsearch 解压到当前目录 [rootlocalhost elk]# tar zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz 安…

Spring Cloud Gateway Nacos 实现动态路由

微服务都是互相独立的,假如我们的网关和其他服务都在线上已经运行了好久,这个时候增加了一个微服务,这个时候要通过网关访问的话需要通过修改配置文件来增加路由规则,并且需要重启项目,所以我们需要实现动态路由 方式一…

【拦截器、过滤器、springAop】那些不为人知的隐秘

首先说到这几个词的时候,大家肯定都很熟悉了,甚至觉得这几个的区别刚刚毕业都能回答了,但是我想大家在实际应用过程中是真得会真正的使用吗?换言之,什么时候用过滤器什么时候使用拦截器,什么时候使用spring…

常用设计模式总结

复习到设计模式的时候写的一些demo代码 回头可以看看 单例的几种比较简单就没写了,专栏有 目录 观察者(发布--订阅模式)模式,多个对象依赖于一个对象,或者多对多 工厂模式:主要是封装了对象的创建&…

C语言学习_DAY_5_循环结构while和for语句【C语言学习笔记】

高质量博主,点个关注不迷路🌸🌸🌸! 目录 I. 案例引入 II. while语句 III. do while语句 IV. for语句 前言: 书接上回,判断结构已经解决,接下来是另一种很重要的结构:循环结构的实…

华为OD机试真题Python实现【字母计数】真题+解题思路+代码(20222023

字母计数 题目 给出一个只包含字母的字符串, 不包含空格,统计字符串中各个子字母(区分大小写)出现的次数, 并按照字母出现次数从大到小的顺序输出各个字母及其出现次数 如果次数相同,按照自然顺序排序,且小写字母在大写字母之前 🔥🔥🔥🔥🔥👉👉👉👉👉�…