【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)
发现了一个使用Selenium的find_element模块,快速获取文字和表格的方法,很实在,以后爬网的时候,就不用beautifulSoup 和 pandas的read_html 混起来用了!
文字部分:实现网络节点下,某个节点下的其他子孙节点的文字的拼接
表格部分:实现获取表格,并转为列表格式
话不多说,码上:
1. 获取文字的部分
如果是简单的文字,直接用text就完成了:
xpath_name='//div[@class="example"]'
driver.find_element(By.XPATH,xpath_name).text
但是有时候,有些文字就会分成很多个节点,要把这些文字拼起来就很麻烦,例如:

有时候在网络节点里,一会是span 标签,一会是a标签,一会是p标签。
就算是用beautifulSoup 来解也很难搞得齐全,用find_element的xpath 来定位也很难搞,也是要考虑层级结构的问题的。
这里可以用上 find_element + 遍历后代节点的方法:
在上面的例子中,我只需要找到id=content 的第一层节点,然后找到该节点下的所有子节点和子孙节点下的text,这样就可以把他们拼凑起来了:
1.1 获取所有子孙节点的写法:
如果你想要从特定的父元素开始获取所有子节点,你可以结合使用标签选择器和.//。
children_elements = parent_element.find_elements(By.XPATH, './/p')
在这个例子中,'.//p'是一个XPath表达式,它意味着“选择当前节点下所有的<p>标签,包括所有层级的后代节点”。
1.2 如果只是获取子节点的话,则是:
children_elements = parent_element.find_elements(By.XPATH, './*')
其中,XPath中的'.'代表当前节点,'/child::* '代表选择当前节点的所有直接子节点。
完整写法:
from selenium import webdriver
from selenium.webdriver.common.by import By# 创建WebDriver实例,这里以Chrome为例
driver = webdriver.Chrome()# 打开目标网页
driver.get("你的目标网页URL")sleep(random.uniform(2, 3))#获取文字部分
#获取第一层节点,父亲节点
parent_element=driver.find_element(By.ID ,'content')
#获取所有
children_elements = parent_element.find_elements(By.XPATH, './/p')
new_content=''# 遍历所有找到的<p>标签的后代节点,并打印它们的标签名和文本
for child in children_elements:#print(f"Tag: {child.tag_name}, Text: {child.text}")new_content=new_content+child.textprint('最后实现的文字:',new_content)

2. 获取表格的部分
获取表格的逻辑是:
1.使用find_element方法定位到表格元素。
2. 使用get_attribute('outerHTML')打印表格内容(可选) 这个方法打印的是含有表格的源码,而非表格的内容
3. for循环遍历表格行和单元格,打印出每一行的单元格文本,以列表的形式显示。
完整逻辑:
from selenium import webdriver
from selenium.webdriver.common.by import By# 创建WebDriver实例
driver = webdriver.Chrome()# 打开目标网页
driver.get("http://example.com/some_page_with_tables.html")# 定位表格元素
table = driver.find_element(By.TAG_NAME, 'table')# 方法1:打印整个表格的HTML
print(table.get_attribute('outerHTML'))# 方法2:遍历并打印表格的每一行和单元格内容
rows = table.find_elements(By.TAG_NAME, 'tr')
for row in rows:cells = row.find_elements(By.TAG_NAME, 'td')cell_texts = [cell.text for cell in cells]print(cell_texts)# 关闭浏览器
driver.quit()

相关文章:
【Python】使用Selenium的find_element模块获取网页上的大段文字和表格的方法(建议收藏!)
发现了一个使用Selenium的find_element模块,快速获取文字和表格的方法,很实在,以后爬网的时候,就不用beautifulSoup 和 pandas的read_html 混起来用了! 文字部分:实现网络节点下,某个节点下的其…...
蓝桥杯刷题——day4
蓝桥杯刷题——day4 题目一题干题目解析代码 题目二题干题目解析代码 题目一 题干 小蓝和朋友们在玩一个报数游戏。由于今年是2024 年,他们决定要从小到大轮流报出是20或24倍数的正整数。前10个被报出的数是:20,24,40,48,60,72,80,96,100,120。请问第2…...
内网是如何访问到互联网(H3C源NAT)
H3C设备NAPT配置 直接打开29篇的拓扑,之前都配置好了 「模拟器、工具合集」复制整段内容 链接:https://docs.qq.com/sheet/DV0xxTmFDRFVoY1dQ?tab7ulgil 现在是出口路由器可以直接访问61.128.1.1,下面的终端访问不了,需要做NAPT源…...
源码分析之Openlayers中的Zoom缩放控件
概述 放大或缩小是地图中最基本的功能,本文主要介绍分析 Openlayers 中Zoom缩放控件的源码实现。 源码分析 Zoom控件继承Control类,关于Control类,可以参考这篇文章源码分析之Openlayers中的控件篇Control基类介绍 如果直接实例化Zoom类&…...
k8s的ConfigMap是什么, 为什么设计ConfigMap, 如何使用ConfigMap
ConfigMap简介, 为什么设计ConfigMap 在k8s中, ConfigMap是一种API对象, 用于将非机密的配置数据存储到键值对中。 Configmap作用是, 把配置数据从应用代码中分隔开, 让镜像和配置文件解耦,实现了镜像的可移植性。 举例: 我有一个Squid(正向代理)的Pod…...
fiddler设置抓取https,还抓取不到https如何解决?
一、清楚 C:\Users\Admin\AppData\Roaming\Microsoft\Crypto\RSA 目录下所有文件(首次安装fiddler请忽略) 二、清除电脑上的根证书,WINR快捷键,输入:certmgr.msc, 然后回车,查找所有fiddler证书…...
Python高性能web框架-FastApi教程:(1)创建一个简单的FastApi
(1)创建一个简单的FastApi 1. 导入必要的库 from fastapi import FastAPI import uvicornFastAPI 是一个用于构建现代、快速(高性能)的Web API的Python框架。uvicorn 是一个ASGI服务器,用于运行异步的Python Web应用…...
Django基础之模板
一.前言 前面我们讲了视图,我们今天来讲一下模板,模板其实也就是视图中render返回的html进行的渲染,然后展示到浏览器页面上去,那我们今天就来和大家来说一下模板的基本用法 二.寻找html模板 这个也就是我们前面说了的找html&a…...
RabbitMQ Work Queues (工作队列模式) 使用案例
Hi~!这里是奋斗的明志,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 🌱🌱个人主页:奋斗的明志 🌱🌱所属专栏:RabbitMQ 📚本系列文章为个人学…...
C#高级:Winform桌面开发中TreeView的基础例子
一、方案一:免递归使用树 namespace WinFormsApp1 {public partial class Form1 : Form{public Form1(){InitializeComponent();}/// <summary>/// 自定义树实体/// </summary>public class WinFormTree{/// <summary>/// 标签名称/// </summ…...
大模型的文件有哪些?
在大模型仓库(如Hugging Face)中,例如:https://modelscope.cn/models/ZhipuAI/glm-4-9b-chat/files,通常会发现以下几类文件: 模型权重文件:存储训练好的模型参数,是模型推理和微调…...
QT 国际化(翻译)
QT国际化(Internationalization,简称I18N)是指将一个软件应用程序的界面、文本、日期、数字等元素转化为不同的语言和文化习惯的过程。这使得软件能够在不同的国家和地区使用,并且可以根据用户的语言和地区提供本地化的使用体验。…...
C 进阶 — 指针的使用
C 进阶 — 指针的使用 主要内容 1、字符指针 2、数组指针 3、指针数组 4、数组传参和指针传参 5、函数指针 6、函数指针数组 7、指向函数指针数组的指针 8、 回调函数 9、指针和数组练习题 前节回顾 1、指针就是个变量,用来存放地址,地址唯一…...
【经验分享】容器云运维的知识点
最近忙于备考没关注,有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源,但我以交流、交换为主,笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟,为了避免更多人花没必要的钱,所以决定公…...
MFC学习笔记专栏开篇语
MFC,是一个英文简写,全称为 Microsoft Foundation Class Library,中文翻译为微软基础类库。它是微软开发的一套C类库,是面向对象的函数库。 微软开发它,是为了给程序员提供方便,减少程序员的工作量。如果没…...
电子科技大学《高级算法设计与分析》期末复习问题汇总(客观题-选择题、判断题)
电子科技大学《高级算法设计与分析》问题汇总_已知背包问题的动态规划算法时间复杂度为o(nw),其中n为物品数目,w为背包容量。请-CSDN博客 转载自上面这个链接,古希腊掌管成电专业课的神!!为了防止他的链接失效,自己也转存一份 &…...
GPTcelltype——scRNA-seq注释
#安装包 install.packages("openai") remotes::install_github("Winnie09/GPTCelltype") #填写API Sys.setenv(OPENAI_API_KEY your_openai_API_key) #加载包 #Load packages library(GPTCelltype) library(openai) #准备文件 #Assume you have already r…...
AI与大数据的深度结合:驱动决策的革命性力量
引言:数字时代的决策挑战 在这个信息爆炸的数字时代,数据早已渗透到我们生活的方方面面。全球每天产生的数据量呈指数级增长,无论是用户的消费行为、设备的运行状态,还是社会热点的实时动态,这些信息的规模和复杂性前所…...
Java多线程与线程池技术详解(九)
面对苦难的态度:《病隙碎笔》“不断的苦难才是不断地需要信心的原因,这是信心的原则,不可稍有更动。” 孤独与心灵的成长:《我与地坛》“孤独的心必是充盈的心,充盈得要流溢出来要冲涌出去,便渴望有人呼应他…...
【常考前端面试题总结】---2025
React fiber架构 1.为什么会出现 React fiber 架构? React 15 Stack Reconciler 是通过递归更新子组件 。由于递归执行,所以更新一旦开始,中途就无法中断。当层级很深时,递归更新时间超过了 16ms,用户交互就会卡顿。对于特别庞…...
【Midjourney企业版落地实战指南】:从0到1搭建合规、可控、可审计的AI设计中台
更多请点击: https://intelliparadigm.com 第一章:【Midjourney企业版落地实战指南】:从0到1搭建合规、可控、可审计的AI设计中台 企业引入Midjourney需突破个人账号局限,构建具备身份鉴权、用量管控、内容水印、操作留痕与策略审…...
TQVaultAE:分布式游戏资产管理系统的架构设计与技术实现
TQVaultAE:分布式游戏资产管理系统的架构设计与技术实现 【免费下载链接】TQVaultAE Extra bank space for Titan Quest Anniversary Edition 项目地址: https://gitcode.com/gh_mirrors/tq/TQVaultAE TQVaultAE作为一个开源的游戏资产管理工具,通…...
【NotebookLM视频转文字实战指南】:20年AI工程师亲测的5大避坑技巧与98.7%准确率实现路径
更多请点击: https://intelliparadigm.com 第一章:NotebookLM视频转文字的核心原理与能力边界 NotebookLM 的视频转文字功能并非直接处理原始视频流,而是依赖 Google Cloud Speech-to-Text API 的增强版语音识别管道,并结合 YouT…...
Windows和Office智能激活工具KMS_VL_ALL_AIO:一站式解决方案指南
Windows和Office智能激活工具KMS_VL_ALL_AIO:一站式解决方案指南 【免费下载链接】KMS_VL_ALL_AIO Smart Activation Script 项目地址: https://gitcode.com/gh_mirrors/km/KMS_VL_ALL_AIO 还在为Windows系统激活和Office软件授权而烦恼吗?KMS_VL…...
Topit 技术深度:macOS窗口层级管理的现代SwiftUI实现与架构解析
Topit 技术深度:macOS窗口层级管理的现代SwiftUI实现与架构解析 【免费下载链接】Topit Pin any window to the top of your screen / 在Mac上将你的任何窗口强制置顶 项目地址: https://gitcode.com/gh_mirrors/to/Topit 深夜两点,当大多数开发者…...
Unity碰撞器性能优化:Collider类型选择与物理系统调优
1. 为什么一个“看不见”的组件,能让帧率从60掉到20?在Unity项目上线前的性能压测阶段,我遇到过最让人头皮发麻的场景不是Shader报错,也不是内存泄漏,而是——主角刚跑进森林,帧率瞬间从58fps断崖式跌到18f…...
Java解析支付宝PKCS#8私钥失败的根源与解决方案
1. 这不是密钥格式错了,是Java对PKCS#8私钥的“认知偏差”在作祟 你刚把支付宝开放平台下载的 .pem 私钥文件丢进 Java 项目,调用 AlipayClient.execute() 就立刻报错:“RSA2签名遭遇异常,请检查私钥格式是否正确”。第一反应…...
Graphormer实战:用最短路径和虚拟节点搞定分子性质预测(附PyTorch代码)
Graphormer实战:从分子结构到性质预测的完整实现指南 在药物发现和材料科学领域,准确预测分子的物理化学性质可以大幅加速研发进程。传统方法依赖昂贵的实验测量或复杂的量子化学计算,而图神经网络(GNN)和Transformer的结合——Graphormer&a…...
PyCharm无法引用本地扩展包问题的结解决方法
一、问题:PyCharm无法引用pygame等本地扩展包。二、原因分析PyCharm使用了自带的Python解释器,而扩展包在自己的Python里。三、解决方法:1、换成自己的解释器,也就是把pygame所在的Python解释器引进来。2、具体步骤:汉…...
深入解析SAR ADC:从二分搜索原理到高精度数据采集实战
1. 项目概述:从“猜数字”游戏理解SAR ADC在模拟信号处理的世界里,我们常常需要将现实世界中连续变化的物理量(比如温度、声音、压力)转换成计算机能够理解和处理的数字信号。这个关键的桥梁,就是模数转换器。而在众多…...
