正则表达式用于捕获HTML源代码中花括号之间的所有内容

时间:2014-12-03 15:46:04

标签: python html regex html-parsing

我环顾了类似的问题,但不幸的是没有解决方案。

我目前正在尝试根据内容对网站进行分类,为此,我将获取其HTML源代码并对其执行某种文档/关键字分类。

现在,我正在替换很多停用词,但我想在HTML源代码中排除函数声明等内容。例如:

function(){
        ... // function definition
}

我想摆脱大括号之间的一切,所以这只是一个空的宣言。我在Python中使用正则表达式库执行此操作,并尝试以下操作:

htmlSource = re.sub('/\{([^}]+)\}/', '', htmlSource)

不幸的是,这似乎只是摆脱了直接被花括号包围的东西,而不是被它包围。

我猜这个正则表达式也需要考虑任意数量的空格和换行符,但是在正则表达式方面我很缺乏经验。

有人可以帮忙吗?

顺便说一句,我目前正在使用urllib2.urlopen()。response()读取html内容:如果有更好的方法来获取它(没有不可见的JS函数声明等),我会非常感激也很欣赏。

1 个答案:

答案 0 :(得分:1)

使用 HTML解析器跳过script标记。

例如,使用BeautifulSoup您可以extract()所有script代码:

from bs4 import BeautifulSoup

data = """
<body>
    <p>Some text</p>
    <script>
        function(){
            ... // function definition
        }
    </script>
    <div>More text here</div>
</body>
"""

soup = BeautifulSoup(data)
for script in soup.find_all('script'):
    script.extract()

print soup.text

打印:

Some text
More text here

并且,为了遵循html + regex帖子的传统,这里是相关的线程,它解释了为什么你应该避免使用正则表达式来解析像HTML数据这样的东西: