美文网首页python
python Beautiful Soup常用过滤方法

python Beautiful Soup常用过滤方法

作者: 丿灬序曲 | 来源:发表于2018-07-18 22:38 被阅读0次

    1.Beautiful Soup

    from bs4 import BeautifulSoup
    soup = BeautifulSoup('<p>Hello</p>','lxml')//倒入需要解析的文件字符串

    print(soup.p.string)

    打印的结果是Hello

    节点选择器

    soup.title/p/head
    获取P标签内容

    标准格式输出页面

    soup.prettify()

    获取属性内容

    soup.title.name #获取到的为标签名称,比如这个结果是title

    获取属性

    soup.p['name']
    此方式获取的是p标签中name属性的值,比如要获取src的值,就把name改为src

    嵌套选择

    soup.head.title
    表示获取head节点中的title节点

    关联选择

    1 子节点和子孙节点
    soup.p.contents #获取到的是p标签的子节点所有内容
    如果要单独获取每一个子节点数据
    for i,child in enumerate(soup.p.children)
    printable(i,child)
    会打印出所有子节点数据
    2.父节点
    soup.p.parents

    3.兄弟节点

    soup.p.next_siblings 下一个兄弟节点
    soup.p.previous_siblings 上一个兄弟节点

    方法选择器

    find_all(name,attrs,recursive,text,**kwargs)
    例如

    1. soup.find_all(name='ul')

    得到的是所有标签名字为ul的标签数据
    soup.find_all(name='li')
    得到的是所有标签名字为li的标签数据

    2.attrs 根据属性查询结果

    soup.find_all(attrs={'id':'list-1'})//查询id为list-1的节点,此处会打印所有子节点

    soup.find_all(attrs={'name':'elements'})//查询name为elements的节点,此处会打印所有子节点

    对于一些常用的属性,比如id和class,可以不用attrs
    例如
    soup.find_all(id='list-1')
    soup.find_all(class_='element')//由于class在python是一个关键字,所以需要加上下划线

    3. text 根据文本匹配

    soup.find_all(text=re.compile('link'))
    匹配所有文字包含link的信息,此处不是节点,是直接匹配节点的文字

    <a>hello,this is a link</a>

    结果为hello,this is a link

    4,兄弟节点,父节点匹配

    find_parents()和find_parent()前者返回祖先节点,后者返回父节点

    find_next_siblings()和find_next_sibling(),前者返回所有下一个兄弟节点,后者返回第一个上一个兄弟节点

    find_all_next()和find_next()其职能和返回节点后所有符合条件的节点,后者返回第一个符合条件的节点

    CSS选择器

    soup.select('.panel .panel-heading') 获取class panel 标签下的 panel-heading class标签
    soup.elect('ul li') ul li标签
    soup.select('#list-2 .element') id为list -2 下 class 为element标签

    soup.select('ul')[0] ul标签下地0个标签

    同样支持嵌套选择

    获取属性和之前类似
    soup.select('.panel')[0]['src']

    到现在为止所有beautiful soup常用匹配结束 ,有错误欢迎指出,不是每个例子都验证过

    相关文章

      网友评论

        本文标题:python Beautiful Soup常用过滤方法

        本文链接:https://www.haomeiwen.com/subject/xlvapftx.html