一、数据的分类

  1、结构化数据

    特点:数据以行为单位,每一个数据表示一个实体。每一行数据的属性都是一样的。
    举例:关系型数据库中的表就是结构化数据。
    处理方法:sql

  2、半结构化数据

    特点:结构化数据的另一种形式。他并不符合关系型数据的特点,不能用关系型模型来描述。但是这种数据包含相关标记,有用         来分割语义元素以及字段进行分层的描述。
       因此也被称为自描述结构。
    举例:xml,html,json
    处理方法:正则,xpath,jsonpath,css选择器。

  3、非结构化数据:

    特点:没有固定结构的数据。
    举例:文档、图片、音频、视频。
    处理方法:常常用二进制形式来做整体保存。

二、json数据

  1、json是什么语言的内容?

    json是js语言中用来用【字符串格式】来保存对象和数组的一种数据结构。
    json数据本质上是字符串。

  2、js种数组和对象

    js的数组:var array = ['aaa','bb','cc']----和python列表对应
    js的对象:var obj = {name:'zhangsan',age:10}---和python字典对应。
        name = obj.name

  3、json数据的解析方法

    json模块:
    (1)对json字符串的操作

      json.loads(json_str)--->python的list或者dict
      json.dumps(python的list或者dict) --->json_str

    (2)对json文件的操作

      json.load(fp)--->从json文件中读出json数据,返回一个python的list或者dict
      json.dump(python的list或者dict,fp)---》python的list或者dict保存到fp所对应的的文件中。

  4、json的意义:

    (1)json作为数据格式进行传输,具有较高的效率
    (2)json不像xml那样具有严格的闭合标签,所以json作为数据传输的时候,他的数据有效占比(有效数据和总数据的比)比xml高很多。
    (3)在相同流量下,json比xml作为数据传输,传输的数据更多。

三、正则表达式

  1、元字符

    (1)匹配边界

      ^ ----行首
      $-----行尾

    (2)重复次数

      ?----0次或1次
      *----->=0
      +---- >=1
      {n,}--->=n
      {n,m}--->=n,<=m
      {n}----n次

    (3)各种字符的表示

      []----匹配括号中一个字符,单字符
      [abc]--匹配a或者b或者c
      [a-z0-9A-Z]
      \d---数字
      \w---数字字母下划线
      \s---空白字符:换行符、制表符、空格
      \b---单词边界
      .----除换行符以外的任意字符。

  2、re模块的使用。

    python中re模块是用来做正则处理的。

    (1)re模块的使用步骤:

#1、导包
import re
#2、将正则表达式编译成一个pattern对象
pattern = re.complie(
r'正则表达式',
'匹配模式'
)
# r表示元字符。
#3、用pattern对象来使用相应的方法来匹配内容。

    (2)pattern对象的方法:

      ①match方法:默认从头开始,只匹配一次,返回一个match对象。

pattern.match(
'匹配的目标字符串',
start,匹配开始的位置--缺省,start = 0
end,匹配结束的位置--缺省,end = -1
) # ——>match对象
          a、match对象的属性
               match.group()---获取匹配内容。
            match.span()--匹配的范围
            match.start()---开始位置
            match.end()---结束位置
          b、这些方法都可以带一个参数0,但是不能写1,1来表示取分组。
            match.group(0)---获取匹配内容。
            match.span(0)--匹配的范围
            match.start(0)---开始位置
            match.end(0)---结束位置
            match.groups()--将所有分组的内容,按顺序放到一个元组中返回

       ②search方法:从任意位置开始匹配,只匹配一次,返回一个match对象

pattern.search(
'匹配的目标字符串',
start,匹配开始的位置--缺省,start = 0
end,匹配结束的位置--缺省,end = -1
) # ——>match对象

      ③findall方法:全文匹配,匹配多次,将每次匹配到的结果放到list中返回。

pattern.findall(
'匹配的目标字符串',
start,匹配开始的位置--缺省,start = 0
end,匹配结束的位置--缺省,end = -1
) # ——>list

      ④finditer方法:全文匹配,匹配多次,返回一个迭代器。

pattern.finditer(
'匹配的目标字符串',
start,匹配开始的位置--缺省,start = 0
end,匹配结束的位置--缺省,end = -1
) #——>list # finditer主要用匹配内容比较多的情况下。

      ⑤split:切分,按照正则所表示内容进行切分字符串,返回切分后的每个子串

pattern.split(
'要切分的字符串',
'切分字数',默认是全部分。
) # ——>list

      ⑥sub方法:用指定字符串,替换正则表达所匹配到的内容。

pattern.sub(
repl,#替换成什么
content,替换什么
count,替换次数,默认替换所有
) # ——>替换后的字符串

      repl替换内容可以使函数:
        函数要求:
          a、函数必须有参数,参数就是正则匹配目标字符串所得到的每个match对象。
          b、这个函数必须要有返回值,返回值必须是字符串,这个字符串将来就作为替换的内容。

#zhangsan:3000,lisi:4000
#涨工资每个人涨1000
content = 'zhangsan:3000,lisi:4000'
p = re.compile(r'\d+')
result = p.sub(add,)

      ⑦分组

          分组在正则表达式中使用()来表示的,一个括号就是一个分组。
          分组的作用:
            a、筛选特定内容
            b、可以在同一个表达式中应用前面的分组:
              \1引用第一分组
            c、findall配合分组
import re

content = '<html><h1>正则表达式</h1></html>'
p = re.compile(r'<(html)><(h1)>(.*)</\2></\1>')
# print(p.search(content).group())
print(p.findall(content))#[('html', 'h1', '正则表达式')]

      ⑧贪婪非贪婪模式

          a、贪婪和非贪婪的却别在于匹配内容的多少。
          b、贪婪使用*来控制匹配次数的。正则默认是贪婪。
          c、非贪婪使用?来控制的。
          d、在表示数量控制元字符后面加一个?,此时就表示这个数量控制符取最小值,也就是非贪婪。

      ⑨匹配模式:

        re.S ----.可以匹配换行符
        re.I----忽略大小写。

      ⑩万能正则匹配表达式:.*?(尽可能少匹配任意内容)配合re.S

【python爬虫】正则表达式的更多相关文章

  1. Python 爬虫-正则表达式(补)

    2017-08-08 18:37:29 一.Python中正则表达式使用原生字符串的几点说明 原生字符串和普通字符串的不同 相较于普通字符串,原生字符串中的\就是反斜杠,并不表达转义.不过,字符串转成 ...

  2. Python爬虫 正则表达式

    1.正则表达式概述 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来 ...

  3. Python 爬虫-正则表达式

    2017-07-27 13:52:08  一.正则表达式的概念 (1)正则表达式是用来简洁表达一组字符串的表达式,最主要应用在字符串匹配中. 正则表达式是用来简洁表达一组字符串的表达式 正则表达式是一 ...

  4. Python爬虫-正则表达式基础

    import re #常规匹配 content = 'Hello 1234567 World_This is a Regex Demo' #result = re.match('^Hello\s\d\ ...

  5. python爬虫+正则表达式实例爬取豆瓣Top250的图片

    直接上全部代码 新手上路代码风格可能不太好 import requests import re from fake_useragent import UserAgent #### 用来伪造爬头部信息 ...

  6. python爬虫之re正则表达式库

    python爬虫之re正则表达式库 正则表达式是用来简洁表达一组字符串的表达式. 编译:将符合正则表达式语法的字符串转换成正则表达式特征 操作符 说明 实例 . 表示任何单个字符 [ ] 字符集,对单 ...

  7. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

  8. python爬虫数据解析之正则表达式

    爬虫的一般分为四步,第二个步骤就是对爬取的数据进行解析. python爬虫一般使用三种解析方式,一正则表达式,二xpath,三BeautifulSoup. 这篇博客主要记录下正则表达式的使用. 正则表 ...

  9. Python爬虫入门之正则表达式

    在前面我们已经搞定了怎样获取页面的内容,不过还差一步,这么多杂乱的代码夹杂文字我们怎样把它提取出来整理呢?下面就开始介绍一个十分强大的工具,正则表达式! 1.了解正则表达式 正则表达式是对字符串操作的 ...

  10. Python爬虫与数据分析之爬虫技能:urlib库、xpath选择器、正则表达式

    专栏目录: Python爬虫与数据分析之python教学视频.python源码分享,python Python爬虫与数据分析之基础教程:Python的语法.字典.元组.列表 Python爬虫与数据分析 ...

随机推荐

  1. Java 基础复习 基础数据类型与包装器类型

    Java 基础 基础数据类型与包装器类型 基础数据类型 java 中包含哪些基础数据类型,默认值分别是多少? 基础数据类型 byte short int long double float char ...

  2. flex招式心法

    flex布局绝对是我们平常在布局中用的最多的一个属性,我们来看看它在can i use中的浏览器支持度:(截止到2019/11/16) 挖藕,凹森!支持度居然这么好,好到连ie也能支持大部分的flex ...

  3. SVN 创建发行版/分支版的步骤

    最近看了很多 Git 与 SVN 的比较,很多都说 SVN 做分支很慢,不知道是从何说起.有可能大家都不清楚,SVN 做分支的正确步骤,特此介绍一下. SVN 服务器后台使用 Berkeley DB ...

  4. Python+Unittest+Requests+PyMysql+HTMLReport 接口自动化框架

    整体框架使用的是:Python+Unittest+Requests+PyMysql+HTMLReport  多线程并发模式 主要依赖模块 Unittest.Requests.PyMysql.HTMLR ...

  5. ABC135记录

    date: 2019-07-28 A - Harmony 题目大意: 给你两个不同的整数A和B,要求你找到一个整数K,同时满足|A-K|=|B-K|.找不到时,输出"IMPOSSIBLE&q ...

  6. 201871010116-祁英红《面向对象程序设计(java)》第十七周学习总结

    博文正文开头格式:(2分) 项目 内容 <面向对象程序设计(java)> https://home.cnblogs.com/u/nwnu-daizh/ 这个作业的要求在哪里 https:/ ...

  7. linux上安装jenkins过程

    最近在学到jenkins分布式构建时,需要一台部署jenkins的主机服务器master,自己用的win10作为slave,所以我想在虚拟机上先部署jenkins. centos还是ubuntu呢,算 ...

  8. 安卓投屏助手(ARDC)最新版

    安卓投屏助手(B1493) 1.兼容Android 10: 2.增加灭屏投屏功能: 3.增加显示鼠标位置功能; 4.增加了虚拟NaviBar功能: 5.捐赠界面增加QQ支付,移除Paypal,感谢大家 ...

  9. Feign Ribbon Hystrix 三者关系 | 史上最全, 深度解析

    史上最全: Feign Ribbon Hystrix 三者关系 | 深度解析 疯狂创客圈 Java 分布式聊天室[ 亿级流量]实战系列之 -25[ 博客园 总入口 ] 前言 疯狂创客圈(笔者尼恩创建的 ...

  10. Java 正则表达式_网络爬虫

    首先 需要了解 一些 关于 网络爬虫的 基本知识: 网络爬虫: 所谓的 爬虫 就是一个 应用 程序, 这个 应用 程序 会 获取 网络中的 指定信息(网页 数据). 例如百度: 启动 这个 爬虫 程序 ...