Python 爬蟲_正則表達式
阿新 • • 發佈:2018-09-03
需要 特殊字符 reg sch content load 過濾 輸出字符串 數量
用來對字符串操作的一種邏輯方式, 對字符串的一種過濾邏輯。
表達式全集: http://tool.oschina.net/uploads/apidocs/jquery/regexp.html
1.
1. re.match ==>嘗試從字符串的起始位置匹配一個模式,如果第一個字符不嫩匹配,則不能正常匹配
re.match(pattern,sring,flags=0)
2. 匹配目標:
import re content=‘Hello 1234567 world_this is a regex demo‘ result=re.match(‘^Hello\s(\d+)\sworld.*demo$‘,content) #正則表達式 print(result.group(1)) #輸出第一個括號的內容 print(result.span()) #輸出輸出字符串的數量
3. 貪婪匹配:
import re content=‘Hello 1234567 world_this is a regex demo‘ result=re.match(‘^He.*(\d+)\sworld.*demo$‘,content) print(result.group(1)) #只能輸出7
#非貪婪匹配 import re content=‘Hello 1234567 world_this is a regex demo‘ result=re.match(‘^He.*?(\d+).*demo$‘,content) print(result.group(1)) #輸出1234567
#匹配模式: import re content=‘‘‘Hello 1234567 world_this is a regex demo ‘‘‘ result=re.match(‘^He.*?(\d+).*?demo$‘,content,re.s) #re.s 是匹配換行符的 print(result.group(1)) #輸出1234567
4. 轉義: 特殊字符需要轉義
import re content=‘price is $500‘ result=re.match(‘price is \$500\‘,content) #轉義之後才能匹配
5. re.search: 掃描字符串,返回第一個匹配的字符,能用search就不用match
import re content=‘Hello 1234567 world_this is a regex demo‘ result=re.search(‘Hello\s(\d+)\sworld.*demo$‘,content) #輸出全部字符串
6. re.findall
results=re.findall(‘正則表達式‘,html,re.S) for result in results: print(result) print(result[1],result[2]...)
7. re.sub: 字符串替換
import re content=‘Hello 1234567 world_this is a regex demo extra stings‘ content=re.sub(‘\d+‘,‘‘,content)
8. re.compile: 把字符串編譯成正則表達式
import re content=‘‘‘Hello 1234567 world_this is a regex demo ‘‘‘ result=re.compile(‘hello.*demo‘,re.s) #re.s 是匹配換行符的 result=re.match(pattern,content)
#實戰練習: import requests import re content=requests.get(‘http://book.doubancom/‘).text patten=re.compile(‘<li,*cover.*?href="(.*?)".*?title="(.*?)".*?more-meta.*?author>(.*?)</span>.*?year>(.*?)</span>.*?</li>‘,re.S) results=re.findall(pattern.content) #print (results) for result in results url, name,author,date=result author=re.sub(‘\s‘,‘‘,author) date=re.sub(‘\s‘,‘‘,date) print(url,name,author,date)
Python 爬蟲_正則表達式