关于python中.xpath的复用

Python+Selenium自动化登录豆瓣:从环境搭建到实战脚本 Web自动化测试是软件工程中提升效率、保障质量的关键技术,其核心原理是通过程序模拟真实用户操作浏览器,实现页面交互的自动化。在Python生态中,Selenium凭借其强大的浏览器控制能力和对JavaScript渲染页面的完美支持,成为处理动态网页自动化任务的首选工具。对于需要登录、表单提交或复杂交互的Web应用,Selenium能有效绕过直接模拟HTTP请求时遇到的反爬机制与动态令牌问题,技术价值在于显著降低了自动化门槛并提升了脚本的稳定性与可维护性。典型的应用场景包括自动化测试、数据采集、定时任务以及工 阅读详情

在python中使用xpath定位时,有时候会先用.xpath定位到一个地点,for循环后,继续使用.xpath,但是会出现问题,比如在下面这个例子中:

 

 根据xpath定位到了tr,注意游览器自动生成了tbody,在python中要把自动生成的tbody层级去掉。


此时我们想获取tr下面的td,请看代码

import requests
from lxml import etree

url = "https://www.w3school.com.cn/xpath/xpath_axes.asp"
res = requests.get(url).text
html = etree.HTML(res)
a = html.xpath("(//table[@class='dataintable'])[1]/tr")
print(a)

for i in a:
    s = i.xpath("//td")
    print(s)
    print(len(s))

for i in a下,我们想找到的是每个tr下面的td,按理来说只有两个,但是返回的却是全部的44个td,问题出在哪里呢?原来是s = i.xpath("//td")这个写法不对,虽然 i 继承了 a 的xpath路径,但是如果写成//td,等于告诉xpath重新搜索全部,必须要加上点才可以。s = i.xpath(".//td"),一个点代表当前目录,两个点代表上级目录

 这次搜索正常了

总结:除非在一开始的搜索式直接写成 (//table[@class='dataintable'])[1]/tr//td,这样直接搜索td,不用带点,在复用.xpath的时候,必须加上点表明当前目录,否则搜索不到想要的结果

Python 爬虫项目:零基础封装爬虫函数,实现代码复用 本文详细介绍了Python爬虫函数封装的核心原则与实战技巧。针对爬虫开发中常见的代码冗余、复用性差等问题,提出三大封装原则:抽离不变逻辑、单一职责、统一异常捕获。通过封装通用网络请求函数和XPath解析函数,实现爬虫核心逻辑的解耦与复用。在此基础上,展示了豆瓣电影、京东商品、B站视频等业务爬取函数的封装案例,实现一行代码调用即可完成数据爬取。文章还提供了常见问题解决方案和完整项目代码,帮助读者快速掌握爬虫封装技能,提高开发效率。最终实现"一次封装,终身复用"的目标,为爬虫进阶开发奠定基础 阅读详情

相关推荐

从零到一掌握XPath:Python爬虫中不可忽视的利器

XPath的威力不在于语法本身,而在于你对HTML文档结构的深刻理解。再精妙的表达式,如果建立在错误的DOM假设上,也会脆弱不堪。查看3个以上样本页面的源码结构识别哪些特征是稳定的(语义class、data属性)哪些是易变的(生成ID、布局顺序)用最稳定的特征作为锚点当你不再把XPath当作“查找工具”,而是视为“描述数据结构的语言”时,你就真正掌握了它。参考资料lxml官方文档 - XPath and XSLT with lxml。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 81

xpath匹配完再匹配一次

1、xpath匹配完结果以list格式存储,每个list下以Element格式存储,循环list到Element格式下直接用xpath,这里xpath里的路径直接接上一个xpath,并且首字符不需要用‘/’连接,直接写节点名称或属性名称即可。【 https://blog.csdn.net/weixin_44500651/article/details/100698862 】 2.转为字符又转为etree.HTML对象。【 https://blog.csdn.net/dezhenqiao7326/

jidushanzhu的博客 790

Python爬虫实战:大学实验室论文列表爬虫实战 - 构建可复用的学术数据采集系统(附 CSV + SQLite存储)!

我长期专注 Python 爬虫工程化实战,主理专栏 👉 《Python爬虫实战》:从采集策略到反爬对抗,从数据清洗到分布式调度,持续输出可复用的方法论与可落地案例。内容主打一个“能跑、能用、能扩展”,让数据价值真正做到——抓得到、洗得净、用得上。

喵手的博客 843

python爬虫之xpath的使用

python爬虫之xpath的使用

weixin_44992737的博客 5763

从零开始:Python爬虫实战教程——爬取豆瓣音乐一周最受欢迎榜单(XPath数据提取+数据存储)

在网络爬虫的学习过程中,找到一个既有技术挑战又能带来成就感的实战项目至关重要。豆瓣音乐作为国内知名的音乐评分和推荐平台,其“一周最受欢迎”榜单汇集了每周最热门的音乐作品,数据更新及时、反爬机制适中,非常适合初学者和进阶开发者练习爬虫技术。本教程将带你从零开始,使用Python编写一个完整的爬虫程序,爬取豆瓣音乐一周最受欢迎榜单,包括歌曲名称、表演者、播放次数、评分等关键信息,并将数据保存为CSV文件和SQLite数据库。

2201_76125261的博客 1193

Python 爬虫项目:爬取电商商品基础信息,提取标题与价格

本文详细介绍了使用Python爬取京东商品数据的完整流程,包括单页爬取、多页批量爬取和数据清洗三大核心功能。通过requests库获取网页数据,利用lxml+XPath解析结构化页面,提取商品标题和价格信息,并进行格式化处理。针对电商反爬机制,提供了请求头配置、延迟设置等解决方案。文章还包含常见问题解答和优化建议,最终整合成可直接复用的完整代码。该教程适合爬虫初学者系统学习电商数据采集,掌握从数据获取到清洗的完整流程,为后续更复杂的爬虫项目打下基础。

2503_91057718的博客 2054

python从入门到放弃篇25(lxml.etree库,urllib.request库,xpath方法,for循环构造xpath路径)爬取一刀999页面,并保存数据。

今天,我研究了一天的爬虫构造方法,自己看了一下书上有讲url的构造,我自己突然想到,url可以构造,那么xpath路径也可以构造啊?试验了一下,还真的可以,所以,跟大家分享一下。现在感觉很舒服,因为又学到新的东西了。 案例网址:http://tggg.37.com/?uid=2743062&bd_vid=12353914052143466403 第一步,我们还是照常的导入我们可能需要使用的各种库。 第二步,将url搭建好,并设置好请求报头。 第三步,将设置好的url和请求报头headers参数赋

Forerunner and Successor 先駆者と後継者 845

深入解析Android Qcom Camera HAL3架构与Camx线程模块

本文深入解析了Android Qcom Camera HAL3架构与Camx线程模块的核心原理。文章以高通芯片平台为例,剖析了从按下快门到生成照片的完整Camera流程分析,重点阐述了Camx框架中线程池、消息队列及Fence同步机制如何协同工作,以实现高效、稳定的多线程并发图像处理,为相机性能优化提供理论基础。

weixin_29184075的博客 221

xpath返回值用for循环时每次都时第一个值的结果

from lxml import etree import requests def get_bus(page): ls = [] url = 'http://www.lzbus.com/www/BusLineSearchResult.asp?page={}'.format(page) r = requests.get(url) r.encoding ...

qq_41400928的博客 3005

一文读懂:CAN总线Bus-Off的触发条件与自动恢复机制

本文详细解析CAN总线Bus-Off状态的触发条件与自动恢复机制。根据ISO 11898-1标准,当发送错误计数器(TEC)超过255时节点进入Bus-Off状态,并通过检测128次总线空闲条件实现自动恢复。文章结合实战案例,探讨硬件故障、软件配置及电磁干扰等常见触发场景,并提供快慢恢复策略与调试方法,帮助工程师快速定位并解决CAN网络故障。

rgv234567的博客 361

昇腾CANN实战:如何用DVPP+AIPP实现32路视频流毫秒级预处理(附性能对比)

本文深入探讨了昇腾CANN架构中DVPP和AIPP模块在32路视频流毫秒级预处理中的硬件加速技术。通过异构计算架构的优化,实现了从传统CPU方案的40.7毫秒到CANN方案3.4毫秒的显著性能提升,特别适用于智能安防领域的实时视频分析需求。文章详细解析了DVPP多通道并行设计和AIPP模型级预处理融合的技术细节,并提供了性能对比数据与实战调优经验。

alice7model的博客 919

Xpath取得的元素element二级检索,二次检索

temp_ls=Selector.xpath("//tr/td[@class='keyword']/a[@class='list-title']") for index,i in enumerate(temp_ls): tempDict={} tempDict['title']=i.xpath("./text()")[0] tempDict['url']=i.xpath...

cc9200的博客 1291

Spring Cloud 整合(一) CRUD

Springcloud 整合之 CRUDSpringcloud介绍功能概述为什么要选用Springcloud Springcloud介绍 功能概述 实现微服务 Spring Cloud为开发人员提供了工具,以快速构建分布式系统中的某些常见模式(例如,配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,领导选举,分布式会话,群集状态)。分布式系统的协调导致样板式样,并且使用Spring Cloud开发人员可以快速站起来实现这些样板的服务和应用程序。 为什么要选用Springcloud

Kerwin-Lin的博客 1501

Python XPath string() 完整使用指南|爬虫高频函数避坑(lxml)

本文深入解析Python爬虫中XPath的string()函数使用技巧。重点对比string()与text()的区别:string()递归获取节点下所有文本(包括嵌套标签),返回单个字符串;而text()只获取直接子文本,返回列表。文章通过实际HTML示例,详细讲解常见错误场景,如批量处理节点、索引混淆等问题,并提供可直接使用的代码模板。最后总结string()的核心特点:只作用于单个节点、支持嵌套文本提取、索引从1开始、空节点返回空字符串等,帮助开发者避免常见陷阱,提高爬虫开发效率。

得塔云的博客 298

用Python写个彩票小助手:自动生成双色球/大乐透号码并保存到桌面

本文介绍如何使用Python开发一个智能彩票助手,实现双色球和大乐透号码的随机生成与桌面文件保存功能。通过详细的代码示例,包括随机号码生成、文件操作、用户交互和错误处理,帮助Python初学者快速掌握实用工具开发技巧。

weixin_42566121的博客 519

昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子

【代码】昇腾AI原生创新算子挑战赛(S1赛季)复盘-LessEqual算子。

william_myq的博客 507

Python如何使用XPath提取表格内容

本文介绍了使用Python中的XPath技术高效解析网页表格数据的完整方案。文章首先对比了正则表达式、BeautifulSoup和XPath三种解析方式的优劣,指出XPath在结构化数据提取中的优势。接着详细讲解了HTML表格的基本结构、常用XPath表达式语法,并提供了两个实战案例:本地HTML表格解析和线上网页表格抓取。针对开发中常见问题,如多表格干扰、子标签文本提取、数据清洗等,给出了具体解决方案和避坑指南。最后封装了一个通用表格解析函数,可直接复用于各类网页表格数据采集任务。该方案特别适合处理榜单、

得塔云的博客 285

廉价却有效?ESD防护中的电容

摘要:在成本敏感型电子产品设计中,多层陶瓷电容(MLCC)可作为TVS二极管的替代方案用于静电放电(ESD)防护。其工作原理是通过电容充放电特性吸收静电能量,而非电压钳位。计算表明100nF/50V MLCC可有效缓冲8kV静电冲击,但存在吸收能量有限、无自恢复等局限。建议将MLCC作为一级缓冲措施,配合TVS等器件形成多级防护,并优先选择X7R材质、100nF容值、50V耐压的0402/0603封装MLCC。该方案在低速信号和电源引脚防护中具有显著成本优势,但不能完全替代专业ESD抑制器。

硬核科技 430

Python+Selenium自动化抢票实战:从环境搭建到核心脚本实现

浏览器自动化是Web开发与测试中的关键技术,它通过程序模拟真实用户操作,实现对网页的自动控制。其核心原理在于驱动浏览器引擎,执行点击、输入、导航等交互指令。这项技术在自动化测试、数据抓取和流程自动化等领域具有重要价值,尤其适用于需要模拟复杂用户交互的场景。本文聚焦于使用Python和Selenium这一经典组合,深入讲解如何构建一个模拟真人操作的自动化脚本。我们将结合网页自动化与反反爬策略这两个关键技术点,详细拆解从环境配置、元素定位、等待机制到Cookie复用等核心环节,最终实现一个针对票务平台、稳定高效

weixin_30294295的博客 381

ASPICE标准快速掌握「1.1. 简介」

ASPICE是汽车软件过程改进能力模型(Automotive SPICE,Automotive - Software Process Improvement and Capability dEtermination)的缩写,是一种针对汽车软件开发过程的国际标准。该标准旨在帮助汽车制造商和供应商改进其软件开发过程,以确保其软件产品的质量和安全性。需要做什么为什么要做技术上的依赖性是什么。

雪云飞星的博客 2293

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python+Selenium自动化抢票脚本实战:从原理到部署的完整指南

浏览器自动化是模拟用户操作、提升效率的核心技术,其原理是通过程序驱动浏览器执行点击、输入等交互行为。在Python生态中,Selenium作为成熟的浏览器自动化框架,凭借其强大的动态网页处理能力和丰富的社区资源,成为实现自动化任务的优选方案。结合Requests库处理HTTP请求、Schedule库管理定时任务,可以构建稳定高效的自动化系统。这类技术广泛应用于数据采集、测试自动化及日常任务自动化等场景。本文聚焦于票务场景,详细讲解如何利用Python+Selenium技术栈,针对大麦网平台构建一个完整的自动

weixin_30952535的博客 1240

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

python3+selenium+pytest实现web自动化框架——基础知识整理

前言 什么时候需要做web自动化 首先要明白web自动化相对接口自动化,要繁琐、费时得多; web自动化不像接口那么追求用例覆盖率 一般用在跑正向主流程(冒烟)、回归测试上 流程(和手工测试的流程其实是一致的) 打开浏览器,webdriver.Chrome() 输入网址 get 找到要操作的元素 find_element() 点点点 click() 断言 Assert() 关闭浏览器 quit() 测试报告 实现web自动化的原理 环境准备 ① python3 ,直接官网下载安装并配置环境变量 ht

qq_36553653的博客 6434

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python Selenium 问卷星自动填写 更快速修改代码以便应用

在前段时间自己编写了一段Selenium的问卷星自动填写的代码(当然是不包含识别验证码的工序的),在应用的过程中,发现了代码修改比较麻烦,每个click控件的选项上都需要添加一次xpath路径,在选择题较少的情况下,情况还好,但是选择题的数目和选项一旦增多就会造成代码修改的复杂程度。下面给出一个表做一个形象的说明 数量 添加xpath次数 10道题 每道题4个选项 40 30道题 每道题4个选项 120 30道题 每道题8个选项 240 添加如此多次的xpath路径,会造成不必要

AtomQQ_2022313691的博客 1132

基于Selenium的Python中英互译爬虫实战:从动态网页到批量翻译

网络爬虫是自动化获取网页数据的关键技术,其核心原理是通过程序模拟浏览器请求,解析HTML结构以提取目标信息。传统爬虫如requests库适用于静态页面,但在面对动态渲染、JavaScript交互的现代网站时往往力不从心。Selenium作为浏览器自动化工具,其技术价值在于能够完整模拟真实用户操作,处理前端动态加载、表单提交等复杂交互场景,从而突破传统爬虫的限制。在应用层面,Selenium广泛应用于数据采集、自动化测试和网页交互模拟等领域。本文聚焦于**翻译爬虫**这一具体场景,针对**动态网页**的挑战,

weixin_33938733的博客 361

终极指南:用requests-html在5分钟内掌握Python网页数据抓取

想要从网站提取数据但讨厌复杂的HTML解析?requests-html让你用Pythonic的方式轻松搞定网页抓取任务。这个专为人类设计的HTML解析库,结合了requests的简洁API和强大的JavaScript渲染能力,让网页数据提取变得前所未有的简单。 **核心关键词:requests-html、Python网页抓取、HTML解析、JavaScript渲染、数据提取** ## 为什么选

gitblog_00016的博客 550
上一篇: 安装Web.py出现No module named ‘utils‘解决方法
下一篇: python 发送qq消息/图片
Peaunt_Python
博客等级 码龄8年 14粉丝 10原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值