我试图用 BeautifulSoup4 和 Python 2.7.6 解析一些 html,但字符串返回“None”。我试图解析的 HTML 是:
<div class="booker-booking">
2 rooms
·
USD 0
<!-- Commission: USD -->
</div>
我的Python代码片段是:
data = soup.find('div', class_='booker-booking').string
我还尝试了以下两种:
data = soup.find('div', class_='booker-booking').text
data = soup.find('div', class_='booker-booking').contents[0]
两者都返回:
u'\n\t\t2\xa0rooms \n\t\t\xb7\n\t\tUSD\xa00\n\t\t\n
我最终试图将第一行放入一个仅表示“2 Rooms”的变量中,将第三行放入另一个仅表示“USD 0”的变量中。
最佳答案
.string
返回 None
,因为文本节点不是唯一的子节点(有注释)。
from bs4 import BeautifulSoup, Comment
soup = BeautifulSoup(html)
div = soup.find('div', 'booker-booking')
# remove comments
text = " ".join(div.find_all(text=lambda t: not isinstance(t, Comment)))
# -> u'\n 2\xa0rooms\n \xb7\n USD\xa00\n \n'
要删除 Unicode 空白:
text = " ".join(text.split())
# -> u'2 rooms \xb7 USD 0'
print text
# -> 2 rooms · USD 0
获取最终变量:
var1, var2 = [s.strip() for s in text.split(u"\xb7")]
# -> u'2 rooms', u'USD 0'
关于python - 美丽汤 4 + python : string returns 'None' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20750852/