我环顾了类似的问题,但不幸的是没有解决方案。
我目前正在尝试根据内容对网站进行分类,为此,我将获取其HTML源代码并对其执行某种文档/关键字分类。
现在,我正在替换很多停用词,但我想在HTML源代码中排除函数声明等内容。例如:
function(){
... // function definition
}
我想摆脱大括号之间的一切,所以这只是一个空的宣言。我在Python中使用正则表达式库执行此操作,并尝试以下操作:
htmlSource = re.sub('/\{([^}]+)\}/', '', htmlSource)
不幸的是,这似乎只是摆脱了直接被花括号包围的东西,而不是被它包围。
我猜这个正则表达式也需要考虑任意数量的空格和换行符,但是在正则表达式方面我很缺乏经验。
有人可以帮忙吗?
顺便说一句,我目前正在使用urllib2.urlopen()。response()读取html内容:如果有更好的方法来获取它(没有不可见的JS函数声明等),我会非常感激也很欣赏。
答案 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数据这样的东西: