一、正則常用的方法
1.match:從開始位置開始查找,一次匹配
2.sear?ch:從任何位置查找,一次匹配
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.歡迎關注微信公眾號:傅里葉變換,個人公眾號,僅用于學習交流,后臺回復”禮包“,獲取大資料學習資料

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/183065.html
標籤:Python
