使用JSoup的if else语句判断标签是否存在的技术问题
解决方案:处理含/不含address标签的div元素
嘿,我来帮你搞定这个需求!针对你提到的25个secondary-attributes类的div元素,我们可以分情况处理——优先提取address标签的文本,不存在时就用neighbor-str-list的span文本并提示“address不存在”。下面分两种常用场景给你代码示例:
Python(BeautifulSoup)方案
如果你是用Python做网页解析,用BeautifulSoup可以轻松实现:
from bs4 import BeautifulSoup # 假设你的网页内容存在html变量中(或者从文件/请求获取) soup = BeautifulSoup(html, 'html.parser') # 获取所有目标div divs = soup.find_all('div', class_='secondary-attributes') for div in divs: # 先尝试找address标签 address_tag = div.find('address') if address_tag: # 提取并处理文本(去除多余空格) address_text = address_tag.get_text(strip=True) print(address_text) else: # 提取span标签的文本 span_text = div.find('span', class_='neighbor-str-list').get_text(strip=True) print(f"address不存在,替代文本:{span_text}")
JavaScript(浏览器端/Node.js)方案
如果是在浏览器环境或者用Node.js的jsdom库处理,代码逻辑类似:
// 获取所有目标div元素 const divs = document.querySelectorAll('.secondary-attributes'); divs.forEach(div => { const addressEl = div.querySelector('address'); if (addressEl) { // 提取文本并去除多余空格 const addressText = addressEl.textContent.trim(); console.log(addressText); } else { const spanEl = div.querySelector('.neighbor-str-list'); const spanText = spanEl.textContent.trim(); console.log(`address不存在,替代文本:${spanText}`); } });
小提示
- 两种方案都加入了
strip()/trim()来清理文本中的多余空格和换行,让输出更整洁; - 因为你提到
neighbor-str-list的span始终存在,所以代码里没有额外做空判断,如果你担心极端情况,可以给span的查询加个存在性检查哦。
内容的提问来源于stack exchange,提问作者Jeremy Wong
相关产品推荐
相关产品推荐

