Python 关于在BeautifulSoup中获取_text()的建议

Python 关于在BeautifulSoup中获取_text()的建议,python,beautifulsoup,Python,Beautifulsoup,我正在使用BeautifulSoup解析html页面中的一些内容 我可以从html中提取我想要的内容(即span中包含的文本,由classmyclass定义) 我得到这个结果: <span class="myclass">Lorem ipsum<br/>dolor sit amet,<br/>consectetur...</span> 我获得: Lorem ipsumdolor sit amet,consectetur... 正如您所看到的,当

我正在使用BeautifulSoup解析html页面中的一些内容

我可以从html中提取我想要的内容(即
span
中包含的文本,由
class
myclass定义)

我得到这个结果:

<span class="myclass">Lorem ipsum<br/>dolor sit amet,<br/>consectetur...</span>
我获得:

Lorem ipsumdolor sit amet,consectetur...
正如您所看到的,当标签

被删除时,内容之间没有更多的间隔,两个单词被浓缩


如何解决此问题?

使用“内容”,然后替换

下面是一个完整的(工作、测试)示例:

结果:

The result of soup.find:
<span class="myclass">Lorem ipsum<br/>dolor sit amet,<br/>consectetur...</span>

result.contents:
[u'Lorem ipsum', <br/>, u'dolor sit amet,', <br/>, u'consectetur...']

result.get_text():
Lorem ipsumdolor sit amet,consectetur...

After replacing all the 'None' with ' ':
Lorem ipsum dolor sit amet, consectetur...
soup.find的结果:
Lorem ipsum
dolor sit amet,
。。。 结果.内容: [u'Lorem ipsum',
,u'dolor sit amet',
,u'concertetur…] result.get_text(): 洛雷姆·伊普苏姆多洛·希特·阿梅特。。。 将所有“无”替换为“”后: 我爱你,我爱你。。。

这比Sean的非常紧凑的解决方案要复杂得多,但因为我说过我会按照我所指出的思路创建和测试一个解决方案,所以我决定兑现我的承诺。您可以更清楚地看到这里发生的情况-

结果.contents
元组中自己的元素,但当转换为字符串时,“什么都没有了”。

如果您使用的是bs4,您可以使用:


result.get_text(separator=“”)
应该可以使用。

使用“contents”,然后替换
?你能把它放到一个例子中,让我接受答案吗?现在就谢谢你的iPhone。需要靠近计算机来创建测试代码。同时,我希望其他人能为您创建一个示例。或者使用kwarg分隔符,这在get_text:result.get_text('separator='))->“Lorem ipsum dolor sit amet,concertetur…”中也有相同的功能
Lorem ipsumdolor sit amet,consectetur...
from bs4 import BeautifulSoup
import urllib2

url="http://www.floris.us/SO/bstest.html"
page=urllib2.urlopen(url)
soup = BeautifulSoup(page.read())

result = soup.find(attrs={'class':'myclass'})
print "The result of soup.find:"
print result

print "\nresult.contents:"
print result.contents
print "\nresult.get_text():"
print result.get_text()
for r in result:
  if (r.string is None):
    r.string = ' '

print "\nAfter replacing all the 'None' with ' ':"
print result.get_text()
The result of soup.find:
<span class="myclass">Lorem ipsum<br/>dolor sit amet,<br/>consectetur...</span>

result.contents:
[u'Lorem ipsum', <br/>, u'dolor sit amet,', <br/>, u'consectetur...']

result.get_text():
Lorem ipsumdolor sit amet,consectetur...

After replacing all the 'None' with ' ':
Lorem ipsum dolor sit amet, consectetur...
" ".join(result.strings)