剥离HTML标记以获取python中的字符串

剥离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="

我尝试用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="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))