内部的代码。有没有一种方法可以轻松地将这些行从html文件中删除?或者我必须将文件拆分为每个
我有一个大的html文件,其中包含完整的代码从一个网站。我只关心<script>...<script/>
内部的代码。有没有一种方法可以轻松地将这些行从html文件中删除?或者我必须将文件拆分为每个<script>
?我想忽略第一个<script>
之前的部分(比如head),我需要忽略文件末尾的标记,以及中间的标记,比如它从<head>
切换到<body>
的位置。
发布于 2017-07-17 09:18:52
如果要删除所有脚本标记:
from bs4 import BeautifulSoup
pagehtml = '''
<li> Text 1 </li>
<script>
<li> Text 2 </li>
<li> Text 3 </li>
</script>
<li> Text 4 </li>
<script>
<li> Text 5 </li>
</script>
'''
soup = BeautifulSoup(pagehtml, 'html.parser')
[s.extract() for s in soup.findAll('script')]
>>> soup
<li> Text 1 </li>
<li> Text 4 </li>
>>>
发布于 2017-07-17 08:42:35
要解析html,建议使用像BeautifulSoup
这样的html解析器库,这项工作并不难:
from bs4 import BeautifulSoup
pagehtml = '''
<li> Text 1 </li>
<script>
<li> Text 2 </li>
<li> Text 3 </li>
</script>
<li> Text 4 </li>
<script>
<li> Text 5 </li>
</script>
'''
soup = BeautifulSoup(pagehtml, 'html.parser')
现在,要返回一个包含所有script
标记的列表(它是内部的),我们需要:
>>> soup.findAll("script")
[<script>
<li> Text 2 </li>
<li> Text 3 </li>
</script>, <script>
<li> Text 5 </li>
</script>]
因此,第一个问题是:
>>> soup.findAll("script")[0]
<script>
<li> Text 2 </li>
<li> Text 3 </li>
</script>
第二个问题是:
>>> soup.findAll("script")[1]
<script>
<li> Text 5 </li>
</script>
https://stackoverflow.com/questions/45149279
复制