无class或id时如何使用BeautifulSoup获取日期相邻td的文本
实现方案
你可以直接使用BeautifulSoup内置的find_next_sibling()方法定位当前td的下一个同层级td节点,具体代码如下:
# 先获取你已经定位到的日期所属td节点 date_td = soup.find_all('td', {'valign': 'top'})[0] # 查找相邻的下一个td元素并提取文本 result = date_td.find_next_sibling('td').get_text(strip=True) print(result)
运行上述代码即可输出目标文本:Wow, you get it!
补充说明
- 不推荐直接使用
.next_sibling属性,因为HTML节点之间的换行、空白字符会被识别为独立的文本节点,直接调用.next_sibling大概率会拿到空内容,find_next_sibling('td')会自动过滤无效节点,直接匹配下一个td标签,稳定性更高。 get_text()方法传入strip=True参数可以自动去除文本前后的换行、多余空格,无需额外做格式清洗。- 如果要避免索引变动导致的匹配错误,也可以通过日期内容精准定位节点:
# 直接匹配对应日期的td节点 target_date_td = soup.find( 'td', {'valign': 'top'}, string=lambda text: text and "Aug 15 2021, 18:36:22 CEST" in text ) if target_date_td: print(target_date_td.find_next_sibling('td').get_text(strip=True))
内容的提问来源于stack exchange,提问作者Zano
相关产品推荐
相关产品推荐

