顯示具有 正則式 標籤的文章。 顯示所有文章
顯示具有 正則式 標籤的文章。 顯示所有文章

2017年6月8日 星期四

正則式學習記錄-Regular Expression

Regular Expression

網址:

範例:

來自: 123.456.789.000

Regular Expression:

/來自: \d+\.\d+\.\d+\.\d

說明:

『/』起始於『來自:』
『\d+』多個數字
『\.』點是特殊字元,所以要加一個斜線
就是,起始於『來自: 』『多個數字』『點多個數字』『點多個數字』『點多個數字』

範例:

取字串中的金額
<span class="price"><span class="currency">TWD</span> 1,118,043.00<br/></span>

Regular Expression:

\d{1,3}(,\d{1,3})*(\.\d{2})

說明:

『\d{1:3}』數值1到3位數
『,\d{1,3})*』,開頭,然後數值1到3位數,『*』比對前面的出現幾組我不確定
『(\.\d{2})』句點,然後數值2位數

2017年5月25日 星期四

Python邊學邊記錄-Crawler網路爬蟲-第四課-正規表示式

Python Crawler Regular Expression

套件:import re

如何爬出網頁上h1~h6的tag資料
最原始的作法,就是把h1~h6弄到list內

這兩句好像放著比較感覺!
    resp = requests.get('目標網址')
    soup = BeautifulSoup(resp.text, 'html.parser')

接著,我們要取得所有h1~h6的tag資料:
hs = soup.find_all(['h1','h2','h3','h4','h5','h6'])
for h in hs:
  print(t.text.strip())

透過正則式來處理:
for h in soup.find_all(re.compile('h[1-6]')):
  print(h.text.strip())

取得png結尾的圖片:
imgs = soup.find_all('img')
  for img in imgs:
    if 'src' in img.attrs: # 確認有src屬性的存在
      if img['src'].endswitch('.png'): #endswitch表示字串結尾
        print(img['src'])

透過正則式來處理:
for img in soup.find_all('img',{'src': re.compile('\.png$')}):
  print(img['src'])

正則式:xxx$,『$』表示以『xxx』為結尾的字串,前面的『\』因為『.』是特殊符號『代表任何字』,所以要加入『\』才可以。

要取得.png結尾,而且檔名有python的圖片
if 'python' in img['src'] and img['src'].endswitch('.png')

透過正則式來處理:
for img in soup.find_all('img',{'src': re.compile('python.*\.png$')})

正則式:

  • 『.』代表任何字
  • 『*』代表長度0或是1
  • [1-9] 表示範圍1-9
  • [A-Za-z1-9]+表示字串由A-Za-z1-9所組成
  • 『+』代表長度1或是更長
  • 『\u』代表透過unicode來查詢
  • [\u4e00-\u9fa5]是全部中文字的一個範圍
更多時候,其實前輩們已經寫好了,google一下也不錯。