BeatifulSoup get_text()函数包括css

时间:2016-02-22 22:47:00

标签: python html css beautifulsoup

使用这个html:

<!DOCTYPE html
PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<style type="text/css">
    body
    {
    font-size: 190%/1.2em;
    margin: 1.58em 16% 1.58em 16%;
    }
</style>
</head>
<body>

<p id="d0e119">De goede Martha zou bijna gedacht hebben veel te laat te zijn, want het middageten was nauwelijks aan de kook op het fornuis
in de keuken.</p>
<p id="d0e121">&#8220;Goed,&#8221; zeide ik bij mij zelven, &#8220;als hij honger heeft, zal mijn oom, die de ongeduldigste mensch is, luide jammerkreten aanheffen.&#8221;</p>

 <p>Sacr\xe9 bleu!</p>
</body>
</html>

并运行此python脚本:

    from bs4 import BeautifulSoup
    import codecs



  with codecs.open('test2.htm', encoding='utf-8') as fileHandle, codecs.open('fname.txt', 'w',encoding='utf-8') as outfile: 
        soup = BeautifulSoup(fileHandle, "lxml")
        print (soup.get_text())
        outfile.write(soup.get_text())
        fileHandle.close()
        outfile.close()

我得到了这个输出:

    body
    {
    font-size: 190%/1.2em;
    margin: 1.58em 16% 1.58em 16%;
    }



De goede Martha zou bijna gedacht hebben veel te laat te zijn, want het middageten was nauwelijks aan de kook op het fornuis
in de keuken.
“Goed,” zeide ik bij mij zelven, “als hij honger heeft, zal mijn oom, die de ongeduldigste mensch is, luide jammerkreten aanheffen.”
Sacr\xe9 bleu!

为什么样式信息被提取为文本?我认为get_text只能获取文本(= body标签中的东西?)

1 个答案:

答案 0 :(得分:2)

style将收集页面上所有元素的文本。它不知道您不希望有style元素的文本。一种常见的方法是从树中删除scripttags_to_remove = ['script', 'style'] for tag in soup.find_all(tags_to_remove): tag.extract() print(soup.get_text()) 等元素,然后获取文本

{{1}}