XPath提取多个标签下的text


import urllib.request
from lxml import etree




url = 'https://www.jiangxi.gov.cn/art/2024/10/5/art_393_5024212.html'

headers = {
    'User-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36 Edg/129.0.0.0'
}

request = urllib.request.Request(url=url,headers=headers)

response = urllib.request.urlopen(request)

content = response.read().decode('utf-8')

tree = etree.HTML(content)



text1 = tree.xpath('//div[@id="zoom"]/p/text()')

text2 = ' '.join(tree.xpath('//div[@id="zoom"]/p/text()'))

#其实text1是列表,里面有很多个值

#第一段
text10 = text1[0]
#第二段
text11 = text1[1]
#第三段
text12 = text1[2]


print(text1)
print(text10)
print(text11)
print(text12)

print("\n\n\n以下是整合:\n",text2)

把多段文字合并

### 使用 XPath 提取 `div` 标签下 `br` 前后的内容 要通过 XPath 获取 `div` 标签下 `br` 标签前后的内容,可以利用 XPath 的 **轴(axis)** 功能来实现。具体来说,可以分别使用 `preceding-sibling::text()` 和 `following-sibling::text()` 来获取目标节点的兄弟文本节点。 #### 获取 `br` 标签之前的内容 对于位于某个 `div` 中的 `br` 标签,其之前的文本内容可以通过以下 XPath 表达式获得: ```xpath //div/br/preceding-sibling::text() ``` 这会返回该 `br` 标签之前的所有文本节点[^1]。 #### 获取 `br` 标签之后的内容 类似的,如果想获取 `br` 标签之后的文本内容,则可采用如下表达式: ```xpath //div/br/following-sibling::text() ``` 此语句能够匹配到紧跟在指定 `br` 后面的所有文本节点。 需要注意的是,在实际应用过程中可能还需要进一步筛选具体的上下文中所需的单个或多个特定位置上的文本片段。比如仅需第一个前置或者后续文字时可以在上述基础上加上索引限定条件如 `[1]`: ```xpath //div/br/preceding-sibling::text()[1] //div/br/following-sibling::text()[1] ``` 这些方法允许精确控制所选范围并满足不同场景下的需求[^3]。 另外值得注意的一点是当处理HTML页面结构复杂度较高情况下, 可能存在嵌套层次较深或者其他干扰因素影响最终结果准确性因此建议结合实际情况调整策略同时验证输出是否符合预期效果[^2]. 以下是基于 Python Selenium 实现的一个简单例子展示如何操作以上提到的功能: ```python from selenium import webdriver driver = webdriver.Chrome() # 加载网页 url = 'your_target_url' driver.get(url) # 查找 br 标签前后的文本内容 before_text = driver.find_element_by_xpath("//div/br/preceding-sibling::text()").text after_text = driver.find_element_by_xpath("//div/br/following-sibling::text()").text print(f"Before BR Text: {before_text}") print(f"After BR Text: {after_text}") driver.quit() ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值