xpath取出某个标签下多个标签的所有文本信息几种方法

本文介绍使用XPath进行网页爬虫的三种方法,包括如何保留HTML标签及其属性,适用于需要精确抓取网页元素的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

爬虫爬取数据有时候我们需要爬取多个标签的文本内容,或者需要保留标签属性,就要连同标签一起拿下来。你可以写正则,今天我介绍一种用xpath爬取的方法。
下边第一种方法就可以连同HTML标签一起爬下来,后两种能爬取所有文本信息,但没有了标签属性:

第一种方法可以取出某个标签内的HTML字符串,包含各种标签属性,输出的结果就是网页正常显示的文章部分的HTML。

 html_content3 = requests.get(details_url).text
    html = etree.HTML(html_content3)
    # content=html.xpath('//div[@class="article-entry"]')[0].xpath('string(.)').strip()#得到其中的所有文本信息,但没有了标签属性。
    # 先取出包含文章主体的标签
    contents = html.xpath('//div[@class="article-entry"]')[0]
    # 取出来的是个element对象,需要给他转换成字符串
    name1 = etree.tostring(contents, method='html')
    # 转成字符串后中文不能正常显示,需要再对其进行解析
    name2 = HTMLParser().unescape(name1.decode())
    content = name2
    

welfare = response.xpath('//div[@class="t1"]').xpath('string(.)').extract()[0]

welfare = response.xpath('//div[@class="t1"]//text()').extract()[0]
### JMeter 中 XPath Extractor 的使用方法 在 JMeter 性能测试中,XPath Extractor 是一种强大的后置处理器(PostProcessor),用于从 XML 或 (X)HTML 响应中提取数据。对于 JMeter 5.0 及以上版本,建议使用改进后的 XPath2 Extractor,因为其具有更好的命名空间管理和性能优化以及支持 XPath 2.0 特性[^2]。 #### 配置 XPath Extractor 参数 为了有效利用 XPath Extractor,在配置时需注意以下几个重要参数: - **Reference Name**: 定义一个易于识别的名字作为变量名,以便于后续脚本调用所提取出来的值。 - **XPath Query**: 输入有效的 XPath 查询语句以定位目标节点或属性;确保此表达式的准确性至关重要,可以通过在线工具提前验证[^4]。 - **Default Value**: 当找不到匹配项时返回默认值,防止因为空结果而导致错误发生。 如果希望获取多个匹配的结果,则可设置 `Match No.` 字段为负数或者指定具体序号来访问特定条目。 #### 示例:从 HTML 页面中提取标题文字 假设要从如下所示的简单网页片段中抓取出 `<h1>` 标签内的文本内容:“欢迎来到我们的简易表单”。 ```html <h1>欢迎来到我们的简易表单</h1> ``` 此时可在 JMeter 脚本里添加一个 XPath Extractor 组件,并按照下面的方式填写各项配置信息: | 属性 | 设置 | |-------------|------------------------------------------------------------| | Reference Name | welcome_message | | XPath Query | `/html/body/h1/text()` | | Default Value | Not Found | 完成上述操作之后,“welcome_message” 将会保存有 “欢迎来到我们的简易表单”。该变量可以在后面的 HTTP 请求或其他逻辑控制元件中被引用和重用。 #### 注意事项 当面对包含复杂结构或是存在大量相似标签的情况时,可能需要更加精确地构建 XPath 表达式,甚至考虑引入额外条件过滤器(如 @class, @id 等),以此提高命中率并减少误报的可能性。 另外值得注意的是,虽然 XPath 提取功能强大,但在实际应用过程中也应当权衡效率问题——特别是针对大型文档而言,频繁执行此类解析可能会带来显著开销。因此,在设计测试计划之初就做好充分规划是非常必要的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值