zoukankan      html  css  js  c++  java
  • BS4 -->解析库

    1.BeautifulSoup库介绍(了解)

    BeautifulSoup库介绍
    BeautifulSoup也是一个解析库
    BS解析数据是依赖解析器的,BS支持的解析器有html,parser,lxml,xml,htmlSlib等,其中lxml解析器速度快,容错能力强
    BS现阶段应用的解析多数是lxml
    pip install bs4
    # bs4的编码流程
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(res.text,'lxml')
    tag = soup.select('CSS选择器表达式') 
    tag = soup.nodename()
    tag = soup.findall()
    # xpath编码流程
    from lxml import etree
    tree = etree.HTML(res.text)
    tag = tree.xpath()

    2.BS4选择器使用

    # 1.节点选择器
    from bs4 import BeautifulSoup
    soup = BeautifulSoup(res.text,'lxml')
    tag = soup.a
    # 2.方法选择器
    find_all(name,attrs,text,limit):
        1).soup.find_all(name='nodename'):根据节点名定位节点
        2).soup.find_all(attrs={'attribute_name': 'attribute_value'}):根据属性定位, 多属性时, 一个即可定位
        3).soup.find_all(text=re.compile(r'...')):根据节点文本定位, 返回文本
        4).soup.find_all(name='nodename', limit=2):只返回两个结果
    find(name, attrs, text, limit): 区别于find_all, find()返回的是一个对象结果, find_all()返回的是一个列表
    # CSS选择器:
    属性选择器:
    
    1.根据节点名定位标签: 标签选择器
    soup.select('title')
    2.根据节点的class属性定位标签: class选择器(classical: 经典)
    soup.select('.panel')
    3.根据id属性定位标签: id选择器
    soup.select('#item')
    4.嵌套选择:
    ul_list = soup.select('ul')  # 得到的依然是一个列表数据类型
    for ul in ul_list:
      print(ul.select('li'))
    5.层级选择器
    soup.select('div > ul > li')   # 单层级选择器
    soup.select('div li')  # 多层级选择器
    # 获取节点的文本或属性:
    tag_obj.string: 获取直接子文本-->如果节点内有与直系文本平行的节点, 该方法拿到的是None
    tag_obj.get_text(): 获取子孙节点的所有文本
    tag_obj['attribute']: 获取节点属性
  • 相关阅读:
    java内部类
    java接口静态方法
    java接口默认方法
    多人协作项目如何保持代码风格统一
    美帝程序员薪资大曝光!2年经验google facebook员工真实薪资揭秘【2020年版】
    go并发编程by examples
    解决macbook外接显示屏vscode文字变模糊的问题
    zookeeper和kafka集群源码搭建
    zookeeper命令
    kafka简介和术语
  • 原文地址:https://www.cnblogs.com/nbzyf/p/13611971.html
Copyright © 2011-2022 走看看