爬虫数据解析与提取
爬蟲數據解析與提取
- 前言
- 正則表達式
- 語法列表
- 語法案例
- 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") # 可以匹配 abcdpython正則模塊
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內容不全,暫不想寫
總結
- 上一篇: 拼多多2018-六一儿童节
- 下一篇: 抖音怎么上传无损画质_抖音高清视频怎么上