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]是全部中文字的一個範圍
沒有留言:
張貼留言