BeautifulSoup 之 select 总结---1205

BeautifulSoup导入

from bs4 import BeautifulSoup

# 将页面注入BeautifulSoup
with open('01.html', 'r', encodeing='utf-8') as f:
    html = f.read()
soup = BeautifulSoup(html, 'lxml')

BeautifulSoup获取文本内容

  • .string可以返回当前节点中的内容,但是当前节点包含子节点时,.string不知道要获取哪一个节点中的内容,故返回空
  • .text(或者.get_text())可以返回当前节点所包含的所有文本内容,包括当前节点的子孙节点
strong_text = item.select('strong')[0].text.strip()
strong_string = item.select('strong')[0].string.strip()

# <strong>nnn</strong>
# 这里二者都可以,因为strong标签下没有子节点

# <strong>nnn<span>niupi</span></strong>
# 这里用text才可获得所有文本内容,string返回为None

BeautifulSoup select 组合查询

组合查找即和写 class 文件时,标签名与类名、id名进行的组合原理是一样的,需要用空格分开

#可以组合标签,类,ID,
strong_detail = item.select('div[style="margin-left: 2em;"] .mim-font')[0].text.strip()

直接子标签查找

如果不知道子标签查找,可能会觉得BeautifulSoup很难用,例如div,因为若没有指向子标签div的div情况下,它会将子标签div及子标签div下的所有标签div共计一起输出。

# 输出class=“small”下的所有div
items = soup.select('#clinicalSynopsisFold .small > div')
# 输出class="small"下一级的所有div
items = soup.select('#clinicalSynopsisFold .small  div')

提取属性值

print(reference.select('.mim-anchor')[0].attrs['id'])

get方法取值

                if part.get('class') == ['authors']:         # 注意,取class为列表
                    print(part.text)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容