天天看点

学习爬虫day03

数据分类

  • 结构化数据
    1. json
    2. xml
    • 处理方法:转化为python数据类型
  • 非结构化数据
    1. html
    • 处理方法:正则表达式、xpath

json模块的使用

  • 将json字符串转换成python类型
    • json.loads()
  • 将json字符串转换成字符串
    • json.dumps()
      • 参数 保存文件的时候使用
        1. ensure_ascii=False
          • 将中文显示出来
        2. indent = 4
          • 添加换行和每行前缩进4个字符
  • 将包含Json的类文件对象与python数据类型进行转换
    • 具有read()或者write()方法的对象就是类文件对象
    • f = open(“a.json”, “r”)中f就是类文件对象
    • json.load(f) 读
    • json.dump(f,数据) 写
    • 使用:
    import json
    with open("a.json","r",encoding='utf-8') as f:
            ret = json.load(f)
     
               

json使用的注意点

  • json中的字符串都是双引号引起来的
    • 如果不是双引号
      • eval:能够实现简单的字符串和python类型转换
      • replace:把单引号替换成双引号
  • 往一个文件中写入多个json串,不再是一个json串,不能直接读取
    • 一行写一个json串,按照行来读取

正则表达式

  • re.compile(编译)
    • p = re.compile(正则表达式) --如果有使用正则参数的话需要先写到编译中如re.S
      • 使用:
      • p.findall(需要处理的字符串)
      • p.sub(替换之后的内容,带替换的内容)
  • pattern.match(从头开始找一个)
  • pattern.search(找一个)
  • pattern.findall(找所有)
  • pattern.sub(替换)
  • 正则表达式中添加re.DOTALL或者re.S可以匹配换行符
  • 如果正则表达式中加括号的话,返回括号中的内容,如果没有则返回所有

正则表达式的注意点

  • re.findall("a(.*)b"),"str")

    , 能够返回括号中的内容,括号前后的内容起到了定位和过滤的效果
  • 原始字符串r,带匹配字符串中有反斜杠的时候,使用r能忽略反斜杠带来的转义效果
  • 点号,默认情况下匹配不到

    \n

  • \s

    能够匹配空白字符,不仅仅包含空格,还有

    \t\r\n

python中的原始字符串 r 的用法

  • 字符串之前加上

    r

    代表原始字符串
  • 作用:忽略转义符

    \

    带来的影响
    • 举例:
      • r"a\n" --> 代表三个字符,第二个字符

        \\

      • “a\n” --> 代表两个字符,第二个为

        \n

      • 如下匹配:
        • r"a\nb" == “a\nb” – false
        • re.findall(“a\nb”,“a\nb”) – 可以匹配到
        • re.findall(r"a\nb",“a\nb”) – 可以匹配到
        • re.findall(r"a\nb",“a\nb”) – 匹配不到
  • 在windows中操作文件路径的时候使用
    • 作用:可以是文件路径中的反斜杠不再是有转义符,也不用在写路径的时候使用两个反斜杠了