使用BeautifulSoup提取span标签内容,如何仅获取标签内的纯文本?
解决方法
你使用的select()方法返回的是符合CSS选择器的标签元素列表,所以输出会包含完整的标签结构,只需两步即可提取到span标签内的纯文本内容:
- 首先从返回的列表中取出第一个匹配的span元素(你的选择器仅匹配到1个元素,用索引
[0]取值即可) - 调用元素的
.text属性或者.get_text()方法提取内部纯文本
代码修改示例
直接在原有select语句后追加取值逻辑即可:
soup = BeautifulSoup(driver.page_source, 'html.parser') text_intro = soup.find( 'div', { 'id' : 'gerais' } ) # 先取列表第一个元素,再提取文本 usernam = soup.select('#main > aside > div > div:nth-child(2) > span:nth-child(3) ')[0].text # 注意原代码此处变量名拼写错误,texto_intro应改为text_intro,否则会触发NameError print( '', 'Result_text_intro -> ', text_intro ) print( '', 'Result_usernam -> ', usernam )
如果需要避免匹配不到元素时触发索引越界报错,可以增加判断逻辑:
usernam_list = soup.select('#main > aside > div > div:nth-child(2) > span:nth-child(3) ') if usernam_list: # strip()方法可顺带去除文本首尾的空格、换行符等多余内容 usernam = usernam_list[0].text.strip() else: # 可自定义未匹配到内容时的默认值 usernam = "未匹配到用户名"
修改后运行代码,输出的usernam就会是纯文本(TestUser)。
内容的提问来源于stack exchange,提问作者M M
相关产品推荐
相关产品推荐

