📅  最后修改于: 2023-12-03 14:59:30.813000             🧑  作者: Mango
BeautifulSoup是一款Python库,主要用来从HTML或XML文件中提取数据。在BeautifulSoup中,附加到标签的内容可以使用多种方法进行访问和修改。
使用.contents属性可以查看标签中的所有子节点。例如,以下HTML代码:
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
使用以下Python代码可以查看.example
标签中的所有子节点:
from bs4 import BeautifulSoup
html = """
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
example = soup.find('div', class_='example')
print(example.contents)
输出结果如下:
[<p>Hello, world!</p>, <ul>\n<li>Item 1</li>\n<li>Item 2</li>\n<li>Item 3</li>\n</ul>]
.contents
属性返回一个列表,其中包含标签的所有直接子节点。在本例中,.example
标签的直接子节点是一个<p>
标签和一个<ul>
标签。
使用.strings属性可以查看标签内的所有文本内容。例如,以下HTML代码:
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
使用以下Python代码可以查看.example
标签内的所有文本内容:
from bs4 import BeautifulSoup
html = """
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
example = soup.find('div', class_='example')
print(list(example.strings))
输出结果如下:
['Hello, world!', '\n', 'Item 1', '\n', 'Item 2', '\n', 'Item 3', '\n']
.strings
属性返回一个生成器,其中包含标签内的所有文本内容。
使用.string属性可以查看标签的第一个子节点中的文本内容。例如,以下HTML代码:
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
使用以下Python代码可以查看.example
标签第一个子节点中的文本内容:
from bs4 import BeautifulSoup
html = """
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
</ul>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
example = soup.find('div', class_='example')
print(example.contents[0].string)
输出结果如下:
Hello, world!
.string
属性返回一个字符串,其中包含标签第一个子节点中的文本内容。
使用.append()方法可以向标签中添加新的子节点。例如,以下HTML代码:
<div class="example">
<p>Hello, world!</p>
</div>
使用以下Python代码可以向.example
标签中添加一个新的<ul>
标签:
from bs4 import BeautifulSoup
html = """
<div class="example">
<p>Hello, world!</p>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
example = soup.find('div', class_='example')
ul = soup.new_tag('ul')
example.append(ul)
print(example)
输出结果如下:
<div class="example">
<p>Hello, world!</p>
<ul></ul>
</div>
.append()
方法会向标签中添加新的子节点。在本例中,.example
标签中添加了一个新的<ul>
标签。
使用.insert()方法可以在标签的指定位置插入新的子节点。例如,以下HTML代码:
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</div>
使用以下Python代码可以在.example
标签的<ul>
标签中的第一个<li>
标签前插入一个新的<li>
标签:
from bs4 import BeautifulSoup
html = """
<div class="example">
<p>Hello, world!</p>
<ul>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</div>
"""
soup = BeautifulSoup(html, 'html.parser')
example = soup.find('div', class_='example')
ul = example.find('ul')
new_li = soup.new_tag('li')
new_li.string = 'New Item'
ul.insert(0, new_li)
print(example)
输出结果如下:
<div class="example">
<p>Hello, world!</p>
<ul>
<li>New Item</li>
<li>Item 1</li>
<li>Item 2</li>
</ul>
</div>
.insert()
方法会在标签的指定位置插入新的子节点。在本例中,新的<li>
标签会在.example
标签的<ul>
标签中的第一个<li>
标签前插入。
在BeautifulSoup中,附加到标签的内容可以使用.contents、.strings、.string、.append()和.insert()等方法进行访问和修改。熟练掌握这些方法可以让你在处理HTML或XML文件时更加得心应手。