天天看點

Python爬蟲連載12-爬蟲正則表示式、BeautifulSoup初步

一、正則常用的方法

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())
           
Python爬蟲連載12-爬蟲正則表示式、BeautifulSoup初步

二、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.歡迎關注微信公衆号:傅裡葉變換,個人公衆号,僅用于學習交流,背景回複”禮包“,擷取大資料學習資料

Python爬蟲連載12-爬蟲正則表示式、BeautifulSoup初步

繼續閱讀