日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

爬虫数据解析与提取

發布時間:2024/1/8 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 爬虫数据解析与提取 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

爬蟲數據解析與提取

  • 前言
  • 正則表達式
    • 語法列表
    • 語法案例
  • Xpath規則運用
    • xpath規則
    • Xpath謂語條件(Predicates)
    • xpath軸
  • CSS選擇器規則與運用
    • BeautifulSoup4模塊
    • JsonPath規則與運用
    • json規則
  • python中運行js
  • 內容不全,暫不想寫

前言

進行爬蟲數據解析與提取方法

  • 爬蟲數據四大解析規則:正則表達式規則、Xpath規則、CSS選擇器規則、JsonPath規則
  • 前端的三大語法:HTML、CSS、JavaScript

正則表達式

語法列表

  • 普通字符語法
  • 預定義字符集語法
  • 數量詞語法

  • 邊界匹配語法
  • 邏輯分組語法
  • 特殊構造語法
  • 語法案例

    import re# re.match(表達式語法, 匹配的字符串)"**** 1.1 一般字符 ****"pattern = "python"re.match(pattern, "python") # pythonre.match(pattern, "python2.7") # python"**** 1.2 . 萬能匹配字符 ****"pattern = "python."re.match(pattern, "python2") # python2re.match(pattern, "python3") # python3re.match(pattern, "python3.7") # python3re.match(pattern, "python\n") # None (無法匹配)re.match(pattern, "python\n", re.S) # python\n"**** 1.3 \ 正則轉義字符 ****"pattern = "\.\*\?\+\^\$"re.match(pattern, ".*?+^$abcd") # .*?+^$# 匹配一個反斜線字符\# 字符串中表示單個反斜線len("\\") # 1 pattern = "\\\\" # 正則中表示單個反斜線re.match(pattern, "\\") # \# r作用:將字符串轉為純正則模式,忽略字符串對其的干擾pattern = r"\\" # 正則中表示單個反斜線re.match(pattern, "\\") # \ "**** 1.4 中括號字符集里的特殊符號將失去所有特殊含義,除了\ ****"pattern = "[.*?+^$]"re.match(pattern, "*")re.match(pattern, "$")# 但當位于首位的^、作為連字符的-、]具備單獨的含義re.match("[a-z]", str1) # 只匹配小寫字母re.match("[^a-z]", str2) # 只匹配非小寫字母re.match("[\^a-z]", str3) # 只匹配以小寫字母或^ re.match("[a\-z]","-") # 只匹配a、-、z 這三個字母re.match("[\]]","]") # 只匹配"]" #--------------------------------------- re.match("\d+\.\d{2,6}", "3.1415926") # 3.141592 re.match("\d+\.\d{2,6}?", "3.1415926") # 3.14 #--------------------------------------- # \b相當于\w和\W的邊界,可以用來匹配出單詞;\B則常用來判斷單詞的連貫性 re.match(r"\w\W\w", "q q") # q q re.match(r"\w\b\W\b\w", "q q") # q q re.match(r"\w+\b\W+\b\w+", "hello-world") # hello-world re.match(r"\w+\b\W+\b\w+", "hello - -- -world") # hello - -- -world # 注意:必須使用r,將字符串變為正則模式,因為\b在普通字符串中也是具有含義的 re.match(r"Tom\B[A-Z][a-z]+", "TomCruise") # 可以匹配 re.match(r"Tom\B[A-Z][a-z]+", "Tom Cruise") # 無法匹配 #---------------------------------------"**** 6.1 (?aiLmsux) 作用:替換flags參數 ****"re.match(r"(?i)ABCD", "abcd") # abcdre.match(r"ABcd", "abcd", flags=re.I) # abcd"**** 6.2 (?:...) 作用:進行匹配,但不計入分組 ****")re.match(r"(ab)(cd)", "abcd").group(1) # abre.match(r"(?:ab)(cd)", "abcd").group(1) # cd"**** 6.3 (?imsx-imsx:...) 作用:為組內設置或去除flags效果 ****"# Python3.6新增正則語法re.match(r"(?i:AB)cd", "abcd") # abcdre.match(r"(?-i:AB)cd", "abcd", flags=re.I) # 無法匹配re.match(r"(?s-i:AB)cd", "abcd", flags=re.I) # 無法匹配# 注意不能在內部即開啟又關閉同一模式,如:i-i、imsx-imsx都是錯誤的"**** 6.4 (?#...) 作用:添加注釋 ****")re.match(r"(?#這是注釋)abcd", "abcd")"**** 6.5 (?=...) 作用:向右正向斷言匹配,后面如果是 ****"# 后面如果是cd就匹配re.match(r"\w+(?=cd)", "abcd") # 可以匹配 abcdre.match(r"\w+(?=cd)", "abcf") # 無法匹配"**** 6.6 (?!...) 作用:向右反向斷言匹配,后面如果不是 ****"# 后面如果不是cd就匹配re.match(r"ab(?!cd)\w+", "abcd") # 無法匹配re.match(r"ab(?!cd)\w+", "abcf") # 可以匹配 abcf"**** 6.7 (?<=...) 作用:向左正向斷言匹配,前面如果是 ****"# 前面如果是ab就匹配re.match(r"\w+(?<=ab)cd", "abcd") # 可以匹配 abcdre.match(r"\w+(?<=ab)cd", "afcd") # 無法匹配"**** 6.8 (?<!...) 作用:向左反向斷言匹配,前面如果不是 ****"# 后面如果不是ab就匹配re.match(r"\w+(?<!ab)cd", "abcd") # 無法匹配re.match(r"\w+(?<!ab)cd", "afcd") # 可以匹配 afcd"**** 6.9 (?(id/name)yes-pattern|no-pattern) 作用:如果給定組存在,則使用yes規則,否則使用no規則 ****")re.match(r"(<){0,1}abcd(?(1)>|)", "<abcd>") # 可以匹配 <abcd>re.match(r"(<){0,1}abcd(?(1)>|)", "<abcd") # 無法匹配re.match(r"(<){0,1}abcd(?(1)>|)", "abcd") # 可以匹配 abcd

    python正則模塊
    re模塊

    Xpath規則運用

    xpath學習文檔

    xpath規則

    Xpath謂語條件(Predicates)

    函數調用

    運算操作

    索引操作

    鏈式謂語

    嵌套謂語

    xpath軸

    CSS選擇器規則與運用

    css選擇器

    BeautifulSoup4模塊

    bs4文檔

    JsonPath規則與運用

    • pip install jsonpath

    json規則

    jsonpath基礎語法

    jsonpath運算符

    jsonpath函數(Python中jsonpath模塊暫不支持該語法)

    • jsonpath數據解析: Python中使用jsonpath模塊時,必須將json字符串轉換為python內置對象,如對象–>字典,數組–>列表。 因為python中需要使用json.loads或load方法將json數據進行簡單轉換。

    python中運行js

    Python中執行JS代碼,通常兩個庫: js2py、pyexecjs

    import js2pyjs2py.eval_js('console.log( "Hello World!" )') # 'Hello World!' func_js = ''' function add(a, b) {return a + b } ''' add = js2py.eval_js(func_js) print(add(1,2)) # 3

    內容不全,暫不想寫

    總結

    以上是生活随笔為你收集整理的爬虫数据解析与提取的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。