剥离HTML标记以获取python中的字符串
我尝试用BeautifulSoup从HTML文件中获取一些字符串,每次使用它时都会得到部分结果 我想得到每个li元素/标记中的字符串。到目前为止,我已经能够像这样获得ul的所有信息剥离HTML标记以获取python中的字符串,python,html,html-parsing,beautifulsoup,strip,Python,Html,Html Parsing,Beautifulsoup,Strip,我尝试用BeautifulSoup从HTML文件中获取一些字符串,每次使用它时都会得到部分结果 我想得到每个li元素/标记中的字符串。到目前为止,我已经能够像这样获得ul的所有信息 #!/usr/bin/python from bs4 import BeautifulSoup page = open("page.html") soup = BeautifulSoup(page) source = soup.select(".sidebar li") 我得到的是: [<li class="
#!/usr/bin/python
from bs4 import BeautifulSoup
page = open("page.html")
soup = BeautifulSoup(page)
source = soup.select(".sidebar li")
我得到的是:
[<li class="first">
Def Leppard - Make Love Like A Man<span>Live</span> </li>, <li>
Inxs - Never Tear Us Apart </li>, <li>
Gary Moore - Over The Hills And Far Away </li>, <li>
Linkin Park - Numb </li>, <li>
Vita De Vie - Basul Si Cu Toba Mare </li>, <li>
Nazareth - Love Hurts </li>, <li>
U2 - I Still Haven't Found What I'm L </li>, <li>
Blink 182 - All The Small Things </li>, <li>
Scorpions - Wind Of Change </li>, <li>
Iggy Pop - The Passenger </li>]
[
Def Leppard-像男人一样做爱
Inxs-永远不要把我们分开
加里·摩尔-越过群山,远在天边 ,
林肯公园-麻木 ,
生活-巴苏尔斯库托巴母马 ,
拿撒勒-爱是伤人的
U2-我还没有找到我是什么
眨眼182-所有的小事情 ,
蝎子-变革之风
Iggy Pop-乘客 ]
我只想从中获取字符串。迭代结果并获取
text
属性的值:
for element in soup.select(".sidebar li"):
print element.text
例如:
from bs4 import BeautifulSoup
data = """
<body>
<ul>
<li class="first">Def Leppard - Make Love Like A Man<span>Live</span> </li>
<li>Inxs - Never Tear Us Apart </li>
</ul>
</body>
"""
soup = BeautifulSoup(data)
for element in soup.select('li'):
print element.text
使用美丽的汤-串的方法
for string in soup.stripped_strings:
print(repr(string))
从文档中:
如果标签中有不止一件东西,您仍然可以查看
只是线。使用.strings生成器:
或
这些字符串往往有很多额外的空白,您可以
改为使用.u字符串生成器删除:
来自的这个示例提供了一个非常好的单行程序
''.join(BeautifulSoup(source).findAll(text=True))
这很好,但在第一行,我还有Live,我想去掉它。@cbomb
text
可以处理这个问题,并从所有嵌套标记中提取文本,请参见我提供的示例。希望有帮助。你解决问题了吗?这些答案有帮助吗?如果是,请选择一个并接受。谢谢
''.join(BeautifulSoup(source).findAll(text=True))