正则,bs4 ,xpath 和jsonpath 的匹配规则

正则匹配:   

规则
  单字符:
    . : 除换行以外所有字符
    [] :[aoe] [a-w] 匹配集合中任意一个字符
    \d :数字 [0-9]
    \D : 非数字
    \w :数字、字母、下划线、中文
    \W : 非\w
    \s :所有的空白字符
    \S : 非空白
  数量修饰:
    * : 任意多次 >=0
    + : 至少1次 >=1
    ? : 可有可无 0次或者1次
    {m} :固定m次
    {m,} :至少m次
    {m,n} :m-n次
  边界:
    \b \B
    $ : 以某某结尾
    ^ : 以某某开头
  分组:
    (ab){3}
    (){4} 视为一个整体
    () 子模式\组模式 \1 \2
  贪婪模式:
    .*? .+?
    re.I : 忽略大小写
    re.M :多行匹配
    re.S :单行匹配

match\search\findall
re.sub(正则表达式, 替换内容, 原字符串)

bs4匹配规则


需要安装:pip install bs4
bs4在使用时候需要一个第三方库,把这个库也安装一下 pip install lxml

简单使用:
  说明:选择器,jquery
    from bs4 import BeautifulSoup
  使用方式:可以将一个html文档,转化为指定的对象,然后通过对象的方法或者属性去查找指定的内容
    (1)转化本地文件:
      soup = BeautifulSoup(open('本地文件'), 'lxml')
    (2)转化网络文件:
      soup = BeautifulSoup('字符串类型或者字节类型', 'lxml')
 (1)根据标签名查找
    soup.a 只能找到第一个符合要求的标签
 (2)获取属性
    soup.a.attrs 获取所有的属性和值,返回一个字典
    soup.a.attrs['href'] 获取href属性
    soup.a['href'] 也可简写为这种形式
    (3)获取内容
    soup.a.string
    soup.a.text
    soup.a.get_text()
   注意:如果标签还有标签,那么string获取到的结果为None,而其它两个,可以获取文本内容
 (4)find
    soup.find('a') 找到第一个符号要求的a
    soup.find('a', title="xxx")
    soup.find('a', alt="xxx")
    soup.find('a', class_="xxx")
    soup.find('a', id="xxx")

  注意:find方法不仅soup可以调用,普通的div对象也能调用,会去指定的div里面去查找符合要求的节点
     find找到的都是第一个符合要求的标签
 (5)find_all   
    soup.find_all('a')
    soup.find_all(['a', 'b'])
    soup.find_all('a', limit=2) 限制前两个
 (6)select
    根据选择器选择指定的内容
    常见的选择器:标签选择器、类选择器、id选择器、组合选择器、层级选择器、伪类选择器、属性选择器
      a   #标签选择器
      .dudu  类选择器
      #lala   id选择器
      a, .dudu, #lala, .meme  #组合选择器
      div .dudu #lala .meme .xixi    #包含选择器  
      div > p > a > .lala    只能是下面一级   #层级选择器
      input[name='lala']  #属性选择器

     select选择器返回永远是列表,需要通过下标提取指定的对象,然后获取属性和节点
     该方法也可以通过普通对象调用,找到都是这个对象下面符合要求的所有节点

猜你喜欢

转载自www.cnblogs.com/airapple/p/9132374.html
今日推荐