一、正則常用的方法 1.match:從開始位置開始查找,一次匹配 2.search:從任何位置查找,一次匹配 3.findall:全部匹配,返回列表 4.finditer:全部匹配,返回迭代器 5.split:分割字元串,返回列表 6.sub:替換 7.匹配中文 中文unicode編碼[u ...
一、正則常用的方法
1.match:從開始位置開始查找,一次匹配
2.search:從任何位置查找,一次匹配
3.findall:全部匹配,返回列表
4.finditer:全部匹配,返回迭代器
5.split:分割字元串,返回列表
6.sub:替換
7.匹配中文
中文unicode編碼[u4e00-u9fa5]
8.貪婪演算法和非貪婪演算法
貪婪模式:在整個表達式匹配成功的前提下,儘可能的多的匹配
非貪婪模式:在整個表達式匹配成功的前提下,儘可能的少的匹配
python中預設時貪婪模式
import re s = r"([a-z]+)( [a-z]+)" pattern = re.compile(s,re.I) m = pattern.match("Hello world wide web") #group(0)表示返回匹配成功的整個字串 s = m.group(0) print(s) #返回匹配成功的整個子串的跨度 a = m.span(0) print(a) #group(1)表示返回的第一個分組匹配成功的字串 s = m.group(1) print(s) #span(1)返回匹配成功的第一個子串的跨度 a = m.span(1) print(a) #groups()返回的是匹配的所有分組子串都輸出出來,不包含整個匹配的子串 b = m.groups() print(b) print("===============") string = r"\d+" pattern = re.compile(string) m = pattern.search("one12two34three56")#返回第一個查找到的結果 print(m.group(0))#這裡的0不寫也沒有關係,不寫就是預設為0 m = pattern.search("one12two34three56",10,40)#從字元串的第十個位置進行查找,第四十結束,這裡不夠四十,那就直接到字元串結束位置即可 print(m) m = pattern.findall("one12two34three56")#以列表的形式返回所有的結果 print(m) m = pattern.finditer("one12two34three56") print(m) for i in m: print(i) print(i.group()) print("=======") string2 = u"你好,世界" pattern = re.compile(r"[\u4e00-\u9fa5]+") print(pattern.search("你好,世界盃").group())
二、BeatuifulSoup4 --CSS選擇器
1.現在使用BeautifulSoup4
2.參考鏈接:https://beautifulsoup.readthedocs.io/zh_CN/latest/
3.幾個常用的提取工具的比較:
(1)正則:很快,不好用,不允許安裝
(2)beautifulsoup:慢,但是使用簡單,安裝簡單
(3)lxml:比較快,使用簡單,但是安裝一般
from urllib import request from bs4 import BeautifulSoup url = "http://www.baidu.com" rsp = request.urlopen(url) content = rsp.read() soup = BeautifulSoup(content,"html") #bs自動轉碼 content = soup.prettify() print(content)
三、源碼
Reptitle12_1_TRegularExpression.py
Reptile12_2_BeautifulSoup.py
https://github.com/ruigege66/PythonReptile/blob/master/Reptitle12_1_TRegularExpression.py
https://github.com/ruigege66/PythonReptile/blob/master/Reptile12_2_BeautifulSoup.py
2.CSDN:https://blog.csdn.net/weixin_44630050
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料