数据清洗: 我们可以使用Beautiful Soup来清洗数据,例如去除HTML标签,过滤掉不需要的数据等。请用实例说明
时间: 2024-03-05 13:49:18 浏览: 231
当我们爬取网页时,往往会得到一些HTML代码,包含了很多我们并不需要的标签和内容。这时候我们可以使用Beautiful Soup来清洗数据。
例如,我们爬取了一个网页,并得到了如下的HTML代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>示例网页</title>
</head>
<body>
<h1>欢迎来到示例网页</h1>
<p>这是一个示例网页,用于演示Beautiful Soup的用法。</p>
<div id="content">
<p>这是网页中的一段内容。</p>
<ul>
<li>列表项1</li>
<li>列表项2</li>
<li>列表项3</li>
</ul>
</div>
<div id="footer">
<p>版权所有 © 示例网页</p>
</div>
</body>
</html>
```
我们可以使用如下的代码来清洗数据:
```python
from bs4 import BeautifulSoup
html = """
<!DOCTYPE html>
<html>
<head>
<title>示例网页</title>
</head>
<body>
<h1>欢迎来到示例网页</h1>
<p>这是一个示例网页,用于演示Beautiful Soup的用法。</p>
<div id="content">
<p>这是网页中的一段内容。</p>
<ul>
<li>列表项1</li>
<li>列表项2</li>
<li>列表项3</li>
</ul>
</div>
<div id="footer">
<p>版权所有 © 示例网页</p>
</div>
</body>
</html>
"""
soup = BeautifulSoup(html, 'html.parser')
# 去除所有标签
clean_text = soup.get_text()
# 去除指定标签
for tag in soup(['head', 'ul']):
tag.decompose()
# 去除指定属性
for tag in soup.find_all(attrs={'id': 'footer'}):
del tag['id']
print(clean_text)
print(soup.prettify())
```
输出结果如下:
```
欢迎来到示例网页
这是一个示例网页,用于演示Beautiful Soup的用法。
这是网页中的一段内容。
列表项1
列表项2
列表项3
版权所有 © 示例网页
<!DOCTYPE html>
<html>
<head>
<title>
示例网页
</title>
</head>
<body>
<h1>
欢迎来到示例网页
</h1>
<p>
这是一个示例网页,用于演示Beautiful Soup的用法。
</p>
<div id="content">
<p>
这是网页中的一段内容。
</p>
</div>
<div>
<p>
版权所有 © 示例网页
</p>
</div>
</body>
</html>
```
可以看到,我们成功地去除了HTML标签,并且过滤掉了不需要的数据,只保留了我们需要的内容。
阅读全文