Python使用正規表示式獲取網頁中所需要的資訊

2022-10-05 03:48:07 字數 2223 閱讀 8325

使用正規表示式的幾個步驟:

1、用import re 匯入正規表示式模組;

2、用re.compile()函式建立乙個regex物件;

3、用regex物件的searc程式設計客棧h()或findall()方法,傳入想要查詢的字串,返回乙個match物件;

4、呼叫match物件的group()方法,返回匹配到的字串。

在互動式環境中簡單嘗試一下,查詢字串中的固話:

import re

text = '小明家的固話是0755-123456,而小麗家的固話時0789程式設計客棧-654321,小王家的**是123456789'#用於檢測的字串

ph_re = re.compile(r'\d?-\d+') #建立regex物件,匹配幾種**的方式,\d表示0-9的數字,表示前面的匹配4次,?表示可選程式設計客棧,+表示出現1次或多次。

matchs1 = ph_re.findall(text) #findall()表示查詢所有匹配項,返回乙個字串

matchs2 = ph_re.search(text)#search(),查詢第一次匹配的文字,返回乙個物件。

print(matchs1)

print(matchs2)

matchs2.group()

返回的結果,是這樣的:

findall()方法返回的是乙個字串,可以直接列印出來。而search()方法返回的是乙個物件,所以列印出來的是是如圖的第二行。

呼叫group(),物件返回匹配的結果。

最後,小王的**之所以沒有匹配到,是因為'-'沒有進行可選即在其後加上『?'。

下面進行乙個小的實驗,獲取某個網頁中所有的http/https**,並計算有多少個。

首先是獲取html檔案。這裡要用到requests模組。

# -*- coding: utf-8 -*-

import requests

import re

def get_html(url):

res = requests.get(url)

res.encoding = 'utf-8'

html = res.text

return html

這裡get_html函式返回的,其實就類似上面例子中的text,用來匹配的文字。

然後,建立正規表示式:

)''',re.verbose)#匹配**,

matchs =

for groups in addr_regex.findall(response):

matchs.append(groups[0])

if len(matchs) == 0:

print('沒有**')

return matchs

這裡向re.compile(),傳入變數re.verbose,作為第二個引數,可以將正規表示式放在多行,並進行注釋,如上。

返回乙個matchs列表物件。

再來個啟動函式。

def start():

url = ''

a = get_html(url)

b = get_addr(a)

print('\n'.join(b))

print(str(len(b)))

print('ok')

if __name__ == '__main__':

start()

這裡傳入的url是我隨意找的乙個新聞鏈結。

然後呼叫get_html()和get_addr(),就得到了想要的東西。str(len(b)),為統計的數量。

測nemjtldzdf試的結果是類似這樣的:

這裡似乎獲取一些url,沒什麼卵用。。。但是,如果結合前面的查詢新聞列表的方式,獲取批量url,

而建立的正則是***.jpg,然後呼叫os模組,os.mkdir(folder)、os.chdir(folder),將獲取到的匹配結果寫入檔案,放入某個資料夾。

那麼就可以實現,從某些**上批量獲取jpg,然後存入某個資料夾的爬蟲功能。實測,可行!

總結本文標題: python使用正規表示式獲取網頁中所需要的資訊

本文位址: /wangluo/re/218880.html

python正規表示式及使用正規表示式的例子

正規表示式 正則表達用來匹配字串 正規表示式匹配過程 正規表示式語法規則 匹配除換行 n 外的任意字串 abcabc 轉義字元,使後乙個字元改變原來的意思 a c a c 字符集,對應的位置可以是字符集中任意字元,字符集中的字元可以逐個列出,也可以給出範圍,如 abc 或 a c 第乙個字元如果是 ...

Python正規表示式使用

python正規表示式使用 正規表示式不是python內建的功能,所以需要引入import re模組才可以使用。正規表示式的功能很多,但是我們通常使用的功能也就是那幾個,這裡對工作中經常使用到的正規表示式進行乙個系統的總結。1.字元 匹配除了換行符 n 外的字元 轉義字元,使後乙個字元改變以前的意思...

python 正規表示式使用

場景 替換很多動態資料的時候,會重複很多的條件判斷if,replace。作用 完成多步,同時去匹配符合特定規則的字串,完成通用的正則匹配 正規表示式是一種通用的字串匹配技術,是不會因為程式語言不同發生變化。想要查詢某種特徵的,具有一定規則的字串,都是可以嘗試使用正規表示式 jsonpath,xpat...