zoukankan      html  css  js  c++  java
  • css选择器

    css选择器组成

    规则由两部分组成:选择器以及一条或多条声明。
    主要讲选择器的相关用法(这在爬虫时候足够用了)
    这个讲解主要是用在bs4中的css选择器;至于pyquery可以看这个

    元素选择器

    选取html中的元素,如p,div;
    .select('p')
    实例

    soup = BeautifulSoup(html_sourse,'lxml')
    element = soup.select('p')
    print(element,type(element)) # <class 'bs4.element.ResultSet'>
    

    类选择器

    .class;div.class
    实例

    #  <class 'bs4.element.ResultSet'>
    lei = soup.select('.ir___QwEG') # 这样所选的话并不会把含有该类的标签打印出来,就是不打印div标签,下方打印
    print('选取所有该类的元素',lei,type(lei))
    div_lei = soup.select('div.ir___QwEG') # 中间不用空行
    print('选取所有该类的元素',div_lei,type(div_lei)) # <class 'bs4.element.ResultSet'>
    

    ID选择器

    与类选择器不同之处在于ID选择器是以"#"开头

    select_id = soup.select('#backtop')
    select_a_id = soup.select('a#backtop')
    print(select_id,type(select_id)) # <class 'bs4.element.ResultSet'>
    print(select_a_id,type(select_a_id)) # <class 'bs4.element.ResultSet'>
    

    属性选择器

    如果希望选择有某个属性的元素,则可以使用属性选择器,不仅局限于id和class属性。
    如:target属性

    # 报错,貌似bs4中的select无法使用css3新增的属性选择器
    # TypeError: select() missing 1 required positional argument: 'selector'
    select_attr = soup.select(target="_blank") # 选择所有含有target属性的元素
    # select_attr_val = soup.select('target="_blank"') # 选择所有含有target="_blank"的元素
    

    既然无法用,那就讲解下,属性选择器符号的运用(target是html标签中的属性,同理也可为其他属性)

    [target~="_blank"]选择属性target包含 _blank的元素
    [target^="_blank"]选择属性target以 _blank开头的元素
    a[target] 选择所有含有target属性的a的元素
    

    后代选择器;采用空格

    element_houdai = soup.select('p input')# 选择所有p元素下的所有input元素
    print(element_houdai,type(element_houdai)) # <class 'bs4.element.ResultSet'> 
    

    子元素选择器;采用大于号 >

    element_son = soup.select('p>input') # 选择所有p元素下的所有input子元素
    print(element_son,type(element_son))  # <class 'bs4.element.ResultSet'> 
    

    相邻兄弟选择器;采用加号 +

    element_brother = soup.select('p+a') # 选择紧跟在p元素后面的所有兄弟a元素
    print(element_brother,type(element_brother)) # <class 'bs4.element.ResultSet'> 
    

    按效果实现来说后代选择器和子元素选择器很像

    bs4一般一开始的使用

    bs4创建<class 'bs4.BeautifulSoup'>对象的方法

    from bs4 import BeautifulSoup
    f = open('test.html','r',encoding='utf-8')
    html_sourse = f.read()
    f.close()
    # 直接通过字符串进行创建
    soup = BeautifulSoup(html_sourse,'lxml')
    
    # 通过打开文件来创建
    soup1 = BeautifulSoup(open('test.html',encoding='utf-8'))
    print(soup1.prettify())
    print(type(soup),type(soup1)) # <class 'bs4.BeautifulSoup'> <class 'bs4.BeautifulSoup'>
    

    bs4的其他资料https://www.cnblogs.com/wkhzwmr/p/15230635.html

  • 相关阅读:
    王立平--scard0与scard1分别指的是什么?以及路径获取
    算法导论 第7章 高速排序
    [转]php-fpm配置具体解释
    ViewPager实现页卡的最新方法--简洁的TabLayout(谷歌支持包)
    MFC对话框贴图基础上控件Stasic变成透明的
    学习Opencv 2.4.9(二) ---操作像素
    Dynamics CRM 2015/2016 Web API:Unbound Action 和 Bound Action
    网页元素居中攻略记_(6)图片水平垂直居中
    【计算机视觉】粒子滤波跟踪
    【python】异常处理
  • 原文地址:https://www.cnblogs.com/wkhzwmr/p/15680201.html
Copyright © 2011-2022 走看看