如何用bs4中的css选择器不爬取<span class="ml15">主任医师 <span class="ml5">教授</span> </span>中ml5节点的内容
时间: 2023-11-16 14:12:24 浏览: 163
可以使用:not()伪类来排除掉含有特定class的元素,实现不爬取<span class="ml15">主任医师 <span class="ml5">教授</span> </span>中ml5节点的内容:
```python
from bs4 import BeautifulSoup
html = '<span class="ml15">主任医师 <span class="ml5">教授</span> </span>'
soup = BeautifulSoup(html, 'html.parser')
result = soup.select('span.ml15:not(.ml5)')
print(result[0].text)
```
输出结果为:主任医师
相关问题
如何用bs4中的css选择器只爬取<span class="ml15">主任医师 <span class="ml5">教授</span> </span>中ml15的内容
可以使用下面的代码来选择只包含在`<span>`标签中class为`ml15`的内容:
```python
from bs4 import BeautifulSoup
html = '<span class="ml15">主任医师 <span class="ml5">教授</span> </span>'
soup = BeautifulSoup(html, 'html.parser')
result = soup.select('span.ml15')[0].get_text()
print(result)
```
输出结果为:
```
主任医师 教授
```
解释一下代码:
首先,将HTML代码传递给`BeautifulSoup`对象来解析。然后,使用`select`方法选择所有`<span>`标签中class为`ml15`的元素。由于`select`方法返回的是一个列表,所以我们要使用索引`[0]`来获取第一个元素。最后,使用`get_text`方法从选定的元素中提取文本内容。
如何用bs4中的css选择器只爬取<span class="ml15">主任医师 <span class="ml5">教授</span> </span>中父节点的内容
可以使用以下代码:
```python
from bs4 import BeautifulSoup
html = '<span class="ml15">主任医师 <span class="ml5">教授</span> </span>'
soup = BeautifulSoup(html, 'html.parser')
parent = soup.select_one('.ml15')
print(parent.text.strip())
```
输出结果为:
```
主任医师 教授
```
解释:
- `soup.select_one('.ml15')` 使用 CSS 选择器选择类名为 `ml15` 的元素,即父节点。
- `parent.text.strip()` 获取父节点的文本内容,并去除首尾的空格。
阅读全文