Python3爬蟲從零開始 正規表示式

2021-08-29 05:31:52 字數 2996 閱讀 2418

正規表示式測試工具:

例項1:match()

import re

content = 'hello 123 4567 world_this is a regex demo'

print(len(content))

result = re.match('^hello\s\d\d\d\s\d\s\w',content)

print(type(result))

print(result.group()) #輸出匹配到的內容

print(result.span()) #輸出匹配的方法

結果:

注意:如果re.macth()匹配不成功,print(type(result))的結果會是。  之後的print也會出錯。

例項2:匹配目標。可以使用()括號將想提取的子字串括起來。

import re

import re

content = 'hello 123 4567 world_this is a regex demo'

print(len(content))

result = re.match('^hello\s(\d\d\d)\s(\d)\s\w',content)

print(result.group())

print(result.group(0))

print(result.group(1)) #提取第1個括號中的匹配結果 「123」

print(result.group(2)) #提取第2個括號中的匹配結果 「4567」

print(result.span())

結果:

注意:result.group(0)中存放的是整個匹配結果!

例項3:貪婪匹配和非貪婪匹配

import re

content = 'hello 123 4567 world_this is a regex demo'

result1 = re.match('^he.*(\d+).*demo$',content) #「.*」貪婪匹配,會匹配盡可能多的字元

print(result1)

print(result1.group(1))

result2 = re.match('^he.*?(\d+).*demo$',content) #「.*?」非貪婪匹配,會匹配盡可能少的字元

print(result2)

print(result2.group(1))

結果:

注意:非貪婪放結尾可能匹配不到任何內容:

例項4:match()與search()match()方法是從字串的開頭開始匹配,一旦開頭不匹配則匹配失敗,更適合用來檢測某個字串是否符合某個正規表示式規則。search()方法在匹配時掃瞄整個字串,然後返回第乙個成功匹配的結果。

import re

content = 'extra string hello 1234567 world xixixi oyo'

result1 = re.match('hello.*?(\d+).*?xixixi',content)

result2 = re.search('hello.*?(\d+).*?xixixi',content)

print(result1)

print(result2)

結果:

例項5:findall()獲取匹配正則式的所有內容。

sub()修改文字。接受3個引數(a,b,c):a為匹配物件,b為替換字串,c為原字串。

compile()將正則字串編譯成正規表示式物件

import re

content1 = "哼哼哈嘿" \

"嚶嚶呀呀"

content2 = "asad32432dasd222"

res1 = re.findall('^$',content1,re.s)

print(res1)

res2 = re.sub('|','',content1)

print(res2)

content3 = '2018-10-16 11:21'

pattern = re.compile('\d:\d')

res3 = re.sub(pattern,'',content3)

print(res3)

結果:

Python3爬蟲從零開始 庫的安裝

抓取網頁之後下一步就是從網頁中提取資訊。提取方式有很多種,可以利用正規表示式進行提請,但是相對而言比較麻煩繁瑣。現在有很多強大的解析庫供我們使用,如lxml,beautiful soupp,pyquery等。本節對其安裝進行介紹。lxml的安裝 lxml支援html和xml的解析,支援xpath解析...

從零開始的Python 3

學!都可以學!1.直接放例項吧qaq 下為求階乘的遞迴 def jc n if n 1 or n 0 return 1 n n jc n 1 return n num jc 10 print num 2.然而函式可以訪問全域性變數但不能修改全域性變數。在函式內宣告全域性變數後才能修改 num 1 d...

從零開始 Python3 學習筆記

感覺有必要學習一門計算機語言,之前學過的計算機語言早已經還給老師了,現在想想實在是浪費 現在算是從零開始學了 在網上查了一下python入門比較簡單,應用面比較廣,好吧,於是就選它吧 短期的目標是做乙個簡單的爬蟲,爬取某網頁上的資料 網上看了一下案例 importurllib.request url...