Python 如何删除span标记中的span标记

Python 如何删除span标记中的span标记,python,beautifulsoup,Python,Beautifulsoup,我正在尝试删除span标记中的span标记,但尚未找到解决方案。 我已经尝试了以下脚本: request = 'http://urltargethere/adeas/asd' r = urlopen(request).read() sew = BeautifulSoup(r, 'lxml') results = sew.findAll("span", {"class": "titles"}) for x in results: print 'text ==> ', x 打印结果为

我正在尝试删除span标记中的span标记,但尚未找到解决方案。 我已经尝试了以下脚本:

request = 'http://urltargethere/adeas/asd'
r = urlopen(request).read()
sew = BeautifulSoup(r, 'lxml')
results = sew.findAll("span", {"class": "titles"})
for x in results:
    print 'text ==> ', x
打印结果为:

<span class="titles"><span class="times">1 hour ago</span>Lorem ipsum dolor sit amet.</span>
<span class="titles"><span class="times">2 hour ago</span>Tara enim ad minim veniam.</span>
<span class="titles"><span class="times">3 hour ago</span>Morol eiusmodtempor incididunt.</span>
from bs4 import BeautifulSoup
a = '<span class="times">1 hour ago</span>Lorem ipsum dolor sit amet.'

soup = BeautifulSoup(a, 'html.parser')
for tag in soup.find_all("span", {'class':'times'}):
    tag.replaceWith('')

print soup.get_text() 
这可能会有帮助

演示:

<span class="titles"><span class="times">1 hour ago</span>Lorem ipsum dolor sit amet.</span>
<span class="titles"><span class="times">2 hour ago</span>Tara enim ad minim veniam.</span>
<span class="titles"><span class="times">3 hour ago</span>Morol eiusmodtempor incididunt.</span>
from bs4 import BeautifulSoup
a = '<span class="times">1 hour ago</span>Lorem ipsum dolor sit amet.'

soup = BeautifulSoup(a, 'html.parser')
for tag in soup.find_all("span", {'class':'times'}):
    tag.replaceWith('')

print soup.get_text() 

如果您只需要span title类的最终文本,“.contents”将返回span元素列表(时间跨度和文本),因此您可以索引所需的元素:

from bs4 import BeautifulSoup

soup = BeautifulSoup('''\
<span class="title"><span class="times">1 hour ago</span>Lorem ipsum dolor sit amet.</span>
<span class="title"><span class="times">2 hour ago</span>Tara enim ad minim veniam.</span>
<span class="title"><span class="times">3 hour ago</span>Morol eiusmodtempor incididunt.</span>''','html.parser')

for s in soup.findAll('span',{'class':'title'}):
    print(s.contents[1])

试试这个,甩掉你不想保留的部分:

content="""
<span class="title"><span class="times">1 hour ago</span>Lorem ipsum dolor sit amet.</span>
<span class="title"><span class="times">2 hour ago</span>Tara enim ad minim veniam.</span>
<span class="title"><span class="times">3 hour ago</span>Morol eiusmodtempor incididunt.</span>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(content,"lxml")
for item in soup.find_all(class_="title"):
    [tag.extract() for tag in item.find_all(class_="times")]
    print(item.text)

打印'text=>',x.text或打印'text=>',x.text.strip(),如果使用“x.text”,则“times”类中的文本仍然被拾取,我想删除“span.times”及其内容用{“class”:“times”}替换{“class”:“titles”}以{“class”:“times”}删除标记,尝试一下这是其中一种情况,如果
soup.select('span.title::text')
奏效了,或者可以直接做到:
soup.xpath('//span[@class=“title”]/text())
或类似的。。。
content="""
<span class="title"><span class="times">1 hour ago</span>Lorem ipsum dolor sit amet.</span>
<span class="title"><span class="times">2 hour ago</span>Tara enim ad minim veniam.</span>
<span class="title"><span class="times">3 hour ago</span>Morol eiusmodtempor incididunt.</span>
"""

from bs4 import BeautifulSoup
soup = BeautifulSoup(content,"lxml")
for item in soup.find_all(class_="title"):
    [tag.extract() for tag in item.find_all(class_="times")]
    print(item.text)
Lorem ipsum dolor sit amet.
Tara enim ad minim veniam.
Morol eiusmodtempor incididunt.