整合營銷服務商

          電腦端+手機端+微信端=數(shù)據(jù)同步管理

          免費咨詢熱線:

          碎片時間學編程「112]:轉義 HTML


          轉義的 HTML 字符進行轉義。

          • 使用String.prototype.replace()方法與匹配需要轉義的字符的正則表達式一起使用。
          • 使用函數(shù)的回調,使用字典(對象)將每個轉義字符實例替換為其關聯(lián)的非轉義字符。

          JavaScript

          const unescapeHTML = str =>
            str.replace(
              /&|<|>|'|"/g,
              tag =>
                ({
                  '&': '&',
                  '<': '<',
                  '>': '>',
                  ''': "'",
                  '"': '"'
                }[tag] || tag)
            );

          示例代碼:

          unescapeHTML('<a href="#">Me & you</a>');
          // '<a href="#">Me & you</a>'

          更多內(nèi)容請訪問我的網(wǎng)站:https://www.icoderoad.com

          義字符串以在 HTML 中使用。

          • 使用String.prototype.replace()方法與匹配需要轉義的字符的正則表達式一起使用。
          • 使用回調函數(shù)使用字典對象將每個字符實例替換為其關聯(lián)的轉義字符。

          JavaScript

          const escapeHTML = str =>
            str.replace(
              /[&<>'"]/g,
              tag =>
                ({
                  '&': '&',
                  '<': '<',
                  '>': '>',
                  "'": ''',
                  '"': '"'
                }[tag] || tag)
            );
          

          示例

          escapeHTML('<a href="#">我 & 你</a>');
          // '<a href="#">我 & 你</a>'
          

          更多內(nèi)容請訪問我的網(wǎng)站:https://www.icoderoad.com

          節(jié)課我們學習了如何使用 BeautifulSoup 來解析頁面,這節(jié)課我們來學習下如何使用正則來解析頁面。

          • 正則表達式的基本概念
          • 正則表達式基本語法
          • 正則表達式常用函數(shù)

          通過學習正則表達式幾個常用函數(shù),可以根據(jù)需要對數(shù)據(jù)進行匹配篩選。

          1. 正則表達式簡介

          在編寫爬蟲的過程中,我們需要解析網(wǎng)頁的內(nèi)容。那么作為文本解析利器的正則表達式當然可以運用到我們的爬蟲開發(fā)中。其實頁面解析過程無非是從海量的字符串中將我們所需要的數(shù)據(jù)匹配并剝離出來,所以在正式的爬蟲開發(fā)中正則會經(jīng)常被用到。

          正則表達式是對字符串操作的邏輯公式。在提取網(wǎng)頁的數(shù)據(jù)的時候,我們需要把源代碼轉換成字符串,然后通過正則表達式匹配想要的數(shù)據(jù)。

          在我們開始使用正則表達式進行模式查找之前,我們需要先熟悉一下正則表達式里面的字符的基本含義,熟悉了它們之后,我們就可以很方便的書寫一些正則表達式進行模式匹配了。

          2. 正則表達式基本語法

          正則表達式的字符和含義

          模式

          描述

          .

          匹配任意字符, 除了換行符

          *

          匹配前一個字符0次或者多次

          +

          匹配前一個字符1次或者多次

          匹配前一個字符0次或者1次

          ^

          匹配字符串開頭

          $

          匹配字符串結尾

          ()

          匹配括號內(nèi)的表達式,表示一個組

          \s

          匹配空白字符

          \S

          匹配任何空白字符

          \d

          匹配數(shù)字,等于[0-9]

          \D

          匹配非數(shù)字,等于0-9

          \w

          匹配字符數(shù)字,等于[A-Za-z0-9]

          \W

          匹配非字符數(shù)字,等于A-Za-z0-9

          []

          表示一組字符

          3. 正則表達式的常用方法

          我們開發(fā)爬蟲使用的是 Python 語言,那么在 Python 中如何使用正則表達式呢?在 Python 中已經(jīng)內(nèi)置了正則表達式模塊 rere 庫是內(nèi)置在 Python 中的,不需要我們進行安裝,直接導入使用即可。

          這里我們主要詳細講解一下 re 庫中的幾種常用方法。這幾種方法也是會經(jīng)常用在爬蟲開發(fā)中的,只要掌握了這些種方法,基本上在爬蟲開發(fā)中需要使用正則表達式的問題都可以解決。

          3.1 re.findall

          findall 方法是找到所有的符合規(guī)則的匹配內(nèi)容,具體語法如下:

          re.findall(pattern, string, flags=0)
          

          來看個例子,找出所有的字符串中的數(shù)字:

          import re # 導入正則
          
          example = 'abc 33 bbb 3223 yehgst adsfe3 332' # 創(chuàng)建目標字符串
          pattern = '\d+'
          re.findall(pattern, example) 
          
          

          效果如下圖所示:

          3.2 re.search

          re.search 掃描整個字符串,并返回第一個成功的匹配。具體語法如下:

          re.search(pattern, string, flags=0)
          

          來看個例子:

          import re
          
          example = "Python is the best language!"
          
          re.search('\APython', example)
          re.search('\AJava', example)
          
          

          效果如下圖所示:

          3.3 re.match

          如果 string 開始的 0 或者多個字符匹配到了正則表達式樣式,就返回一個相應的匹配對象 。 如果沒有匹配,就返回 None ;注意它跟零長度匹配是不同的。

          re.match(pattern, string, flags=0)
          

          實例:

          import re
          
          string = '5523 abc, cde 666623'
          
          pattern = '(\d{4}) (\w{3})'
          
          match = re.search(pattern, string) 
          
          match.group(1)
          match.group(2)
          match.groups()
          
          

          效果如下:

          3.4 re.split

          用 pattern 分開 string 。 如果在 pattern 中捕獲到括號,那么所有的組里的文字也會包含在列表里。如果 maxsplit 非零, 最多進行 maxsplit 次分隔, 剩下的字符全部返回到列表的最后一個元素

          re.split(pattern, string)
          

          實例:

          import re
          
          string = 'aaabbb 212 dxsxasxw fdexx:3453423.'
          pattern = '\d+'
          
          result = re.split(pattern, string) 
          print(result)
          
          

          效果如下:

          3.5 re.sub

          返回通過使用 repl 替換在 string 最左邊非重疊出現(xiàn)的 pattern 而獲得的字符串。 如果樣式?jīng)]有找到,則不加改變地返回 string。 repl 可以是字符串或函數(shù);如為字符串,則其中任何反斜杠轉義序列都會被處理。 也就是說,\n 會被轉換為一個換行符,\r 會被轉換為一個回車附,依此類推。 未知的 ASCII 字符轉義序列保留在未來使用,會被當作錯誤來處理。 其他未知轉義序列例如 & 會保持原樣。 向后引用像是 會用樣式中第 6 組所匹配到的子字符串來替換

          re.sub(pattern, replace, string)
          

          實例:

          import re
          
          string = 'abc 3d a52a33 adex f45 6'
          
          pattern = '\s+'
          
          replace = ''
          
          new_string = re.sub(pattern, replace, string) 
          print(new_string)
          
          

          例子如下:

          3.6 re.subn

          行為與 sub() 相同,但是返回一個元組 (字符串, 替換次數(shù)).

          re.subn(pattern, replace, string)
          

          實例:

          import re
          
          string = 'abc 3d a52a33 adex f45 6'
          
          pattern = '\s+'
          
          replace = ''
          
          new_string = re.subn(pattern, replace, string) 
          print(new_string)
          
          

          例子如下:

          4. 小結

          這一小節(jié),我們學習了正則表達式的基本語法,以及通過多個例子展示了正則表達式的使用方法,正則表達式難有一點大, 同學們需要多加練習,才能牢固的掌握。


          主站蜘蛛池模板: 久久无码AV一区二区三区| 无码少妇一区二区性色AV| 国产精品免费综合一区视频| 亚洲日韩AV一区二区三区中文 | 影院无码人妻精品一区二区| 成人毛片无码一区二区| 精品国产免费观看一区| AV无码精品一区二区三区宅噜噜| 精品久久国产一区二区三区香蕉 | 亚洲视频在线一区二区| 成人一区二区免费视频| 无码一区二区三区视频| 在线精品日韩一区二区三区| 国产日韩一区二区三免费高清| 国产精品va无码一区二区| 精品91一区二区三区| 一区二区三区在线观看| 99久久国产精品免费一区二区| 在线播放偷拍一区精品| 国产午夜精品一区理论片飘花| 国产在线第一区二区三区| 精品亚洲AV无码一区二区三区| 国产品无码一区二区三区在线蜜桃| 国产成人一区二区在线不卡| 亚洲熟妇无码一区二区三区 | 精品国产亚洲一区二区三区| 国产精品一区二区三区久久 | 国产精品自拍一区| 国产韩国精品一区二区三区 | 在线免费观看一区二区三区| 无码乱人伦一区二区亚洲| 久久国产香蕉一区精品| 国产福利一区二区在线视频 | 色噜噜AV亚洲色一区二区| 久久国产免费一区| 亚洲视频一区在线观看| 在线视频一区二区三区三区不卡| 无码中文人妻在线一区二区三区 | 亚洲av无码一区二区三区人妖| 久久国产午夜精品一区二区三区 | 亚洲熟妇AV一区二区三区浪潮|