筆記bs,正則

發表於2019-03-24

爬蟲:請求網站並提取資料的自動化程式
請求 - 響應(HTML、Json字串、二進位制資料(圖片、視屏)等) - 解析 - 儲存

  • 請求
  1. 方式(主要GET、POST)
  2. URL
  3. 請求頭(如User-Agent,Host,Cookies(保持登入會話)等)
  4. 請求體(From Data是一部分))
  • 響應
  1. 狀態(200, 301(跳轉), 404, 502)
  2. 響應頭(設定Cookie等)
  3. 響應體(請求內容,如HTML、圖片等)

Beautiful Soup(beautifulsoup4)

  • 引用 from bs4 import BeautifulSoup

  • 對變數進行判斷的時候import bs4

  • Beautiful Soup解析器

    解析器 使用方法 條件
    bs4的HTML解析器 BeautifulSoup(mk,'html.parser') 安裝bs4庫
    lxml的HTML解析器 BeautifulSoup(mk,'lxml') pip install lxml
    lxml的XML解析器 BeautifulSoup(mk, 'xml') pip install lxml
    html5lib的解析器 BeautifulSoup(mk, 'html5lib') pip install html5lib
  • Beautiful Soup類的基本元素

    基本元素 說明
    Tag 標籤,最基本的資訊組織單元,分別用<>和</>標明開頭和結尾
    Name 標籤的名字,<p>...</p>,格式是<tag>.name
    Attributes 標籤的屬性,字典形式組織,格式:<tag>.attrs
    NavigableString 標籤內非屬性字串,<>...</>中字串,格式:<tag>.string
    Comment 標籤內字串的註釋部分,一種特殊的Comment型別

正規表示式

  • 正規表示式的常用操作符
操作符 說明 例項
. 表示任何單個字元
[]] 字符集,對單個字元給出取值範圍 [abc]表示a、b、c,[a-z]表示a到z單個字元
[^] 非字符集,對單個字元給出排除範圍 [^abc]表示非a或非b或c的單個字元
* 前一個字元0次或無限次擴充套件 abc*表示ab、abc、abcc、abccc等
+ 前一個字元1次或無限次擴充套件 abc+表示abc、abcc、abccc等
? 前一個字元0次或1次擴張 abc?表示ab、abc
| 左右表示式任意一個 abc|def表示abc、def
{m} 擴充套件前一個字元m次 ab{2}c表示abbc
{m,n} 擴充套件前一個字元m至n次(含n) ab{1,2}c表示abc、abbc
^ 匹配字串開頭 ^abc表示abc且在一個字串的開頭
$ 匹配字串結尾 abc&表示abc且在一個字串的結尾
() 分組標記,內部只能使用|操作符 (abc)表示abc,(abc|def)表示abc、def
\d 數字,等價於[0-9]
\w 單詞字元,等價於[A-Za-z0-9_]
  • 正規表示式語法例項
正規表示式 對應的字串
p(Y|YT|YTH|YTHO)?N 'PN' 'PYN' 'PYTN' 'PYTHN' 'PYTHON'
PYTHON+ 'PYTHON' 'PYTHONN' 'PYTHONNN' ...
PY[TH]ON 'PYTON' 'PYTHON'
PY[^TH]?ON 'PYON' 'PYaON' 'PYbON' 'PYcON'...
PY{:3}N 'PN' 'PYN' 'PYYN' 'PYYYN'
  • 經典的正規表示式
正規表示式 對應的字串
^[A-Za-z] + $ 由26個字母組成的字串
^[A-Za-z0-9] + $ 由26個字母和數字組成的字串
^-?\d + $ 整數形式的字串
^[0-9]*[1-9][0-9]*$ 正整數形式的字串
[1-9]\dd{5} 中國境內郵政編碼,6位
[\u4e00-\u9fa5] 匹配中文字元
\d{3}-\d{8}|\d{4}-\d{7} 國內電話號碼,010-68913536
  • 匹配IP地址的正規表示式

0-99: [1-9]?\d
100-199: 1\d{2}
200-249: 2[0-4]\d
250-255: 25[0-5]

相關文章