如何解析提取含::marker的标签?BeautifulSoup爬取li文本遇阻
解决方法:提取含::marker伪元素的标签文本
首先明确:::marker是CSS伪元素,不会出现在HTML源码里,你看到的是浏览器渲染后的效果,BeautifulSoup解析的原始HTML中根本没有这个伪元素的内容。你当前的问题核心是代码写法有误,导致未正确提取
修正后的代码
from bs4 import BeautifulSoup import requests url = "目标网站链接" page = requests.get(url) soup = BeautifulSoup(page.text, 'html.parser') # 找到所有<li>标签,而非仅第一个 li_elements = soup.find_all("li") for li in li_elements: # 直接获取<li>的文本,自动清理空白字符 print(li.get_text(strip=True))
关键说明
soup.find("li")仅返回第一个- 标签,改用
find_all才能获取全部列表项 get_text(strip=True)会自动去除文本中的换行、空格等空白内容,直接输出干净的文本- 你看到的::marker是浏览器通过CSS生成的(比如圆点、数字序号),原始HTML里没有这些内容。如果需要模拟marker的样式,可自行在输出时添加,示例:
for index, li in enumerate(li_elements, start=1): print(f"{index}. {li.get_text(strip=True)}") # 生成数字序号 # 或用圆点标记 print(f"• {li.get_text(strip=True)}")
内容的提问来源于stack exchange,提问作者Carl_Johnson
相关产品推荐
相关产品推荐

