1. 程式人生 > >Python -- 基礎爬蟲

Python -- 基礎爬蟲

關於爬蟲(入門)

2018/09/18


正則表示式(一種進行資料篩選的表示式)

  • 原子(正則表示式最基本組成單位)

    • 普通字元字串、非列印字元\n、通用字元、原子表。
    • 匯入正則表示式:import re
      eg:result=re.search(‘yue’,‘http://www.baidu.com’)
    • 通用字元(萬用字元,可以匹配一系列東西):
      \w:匹配任意一個字母數字下劃線
      \d:匹配任意一個十進位制數
      \s:匹配任意一個空白字元
      \W:匹配\w相反東西(同理\D、\S)
      eg:

    result=re.search(’\w\dpython\w’,‘fjfj22pythond’)
    print(result)
    <re.Match object; span=(4, 13), match=‘22pythond’>

  • 原子表
    eg:

    result=re.search(‘pyth[own]n’,‘fjfj22pythwnd’)
    #任意o、w、n其一即可
    print(result)> print(result)
    <re.Match object; span=(6, 12), match=‘pythwn’>

  • 元字元(正則表示式中特殊含義的字元)

    • ^:匹配開始位置
      $:匹配結束位置
      *:匹配大於0次、1次、多次前面的原子
      ?:匹配0次、1次前面的原子(也是懶惰模式)
      +:匹配大於0次前面的原子
      {}:裡面加數字,表示前面的原子共出現多少次(包括前面的數);裡面數字n加,
      表示至少出現n次;數字n1+,+數字n2,至少n1至多n2。
      |:模式選擇符,或
      ():用於提取內容
      .:匹配除了換行符之外任意字元
  • 模式修正符(不改變正則表示式的前提下,通過模式修正改變正則表示式的含義,從而實現一些匹配結果的調整等功能)

    • I:忽略正則表示式大小寫
      M:多行匹配
      L:本地化識別匹配(這是個啥?)
      U:根據unicode字元解析我們的字元
      S:讓`.``也匹配換行符
      eg:

    result=re.search(‘python’,‘fjfj22Pythond’,re.I)
    print(result)> print(result)
    <re.Match object; span=(6, 12), match=‘Python’>

  • 貪婪模式(try more)、懶惰模式(try less)

result=re.search(‘p.n’,‘fjfj22Pythondy’,re.I)
#貪婪模式,結果Pythondy
result=re.search('p.
?n’,‘fjfj22Pythondy’,re.I)
#懶惰模式,結果Py

  • 正則表示式函式
    • re.match():從頭搜尋,頭不匹配就沒了

    result=re.search(‘p.*?n’,‘fjfj22Pythondy’,re.I)
    #結果none

    • re.search():任意位置搜尋,但只出一個結果
    • 全域性方式
      eg:

    result=re.compile(‘p.*?y’).findall(‘dhpjsfhydjpfy’)
    print(result)
    [‘pjsfhy’, ‘pfy’]