使用BeautifulSoup提取网页左侧灰色栏中的链接文本
解决方案
目标网页的左侧灰色栏并未使用表格布局,你需要调整定位逻辑,直接定位到灰色栏的容器,再从中提取链接文本。以下是修正后的代码:
import requests from bs4 import BeautifulSoup # 目标网页URL url = "https://www.mountainproject.com/area/110928184/stuart-enchantments" # 获取网页内容 response = requests.get(url) # 解析HTML soup = BeautifulSoup(response.text, 'html.parser') # 定位左侧灰色栏容器:id为sidebar的div标签 sidebar_container = soup.find('div', id='sidebar') # 提取容器内所有区域链接的标签(对应导航列表里的a标签) area_links = sidebar_container.select('.mp-sidebar-section ul.nav-stacked li a') # 按预期格式输出链接文本 for link in area_links: link_text = link.get_text(strip=True) # 判断是否为加粗项(对应网页里带strong标签的链接) if link.find_parent('strong'): print(f"** {link_text}") else: print(link_text)
代码说明:
- 原代码中查找
table的逻辑错误,网页左侧栏采用div+ul的列表结构实现,因此改为定位id="sidebar"的div作为容器。 - 使用
select方法精准定位导航列表内的a标签,确保只提取目标区域的链接。 - 针对预期结果里的加粗项,通过判断链接是否被
strong标签包裹,实现对应格式的输出。
内容的提问来源于stack exchange,提问作者Prince M
相关产品推荐
相关产品推荐

