天天看點

學習爬蟲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中操作檔案路徑的時候使用
    • 作用:可以是檔案路徑中的反斜杠不再是有轉義符,也不用在寫路徑的時候使用兩個反斜杠了