欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python爬蟲教程之利用正則表達(dá)式匹配網(wǎng)頁內(nèi)容

 更新時間:2020年12月08日 14:32:48   作者:鹿鳴Llane  
這篇文章主要給大家介紹了關(guān)于Python爬蟲教程之利用正則表達(dá)式匹配網(wǎng)頁內(nèi)容的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

Python爬蟲,除了使用大家廣為使用的scrapy架構(gòu)外,還有很多包能夠?qū)崿F(xiàn)一些簡單的爬蟲,如BeautifulSoup、Urllib、requests,在使用這些包時,有的網(wǎng)絡(luò)因為比較復(fù)雜,比較難以找到自己想要的代碼,在這個時候,如果能夠使用正則表達(dá)式,將能很方便地爬取到自己想要的數(shù)據(jù)。

何為正則表達(dá)式

正則表達(dá)式是一種描述字符串排列的一種語法規(guī)則,通過該規(guī)則可以在一個大字符串中匹配出滿足規(guī)則的子字符串。簡單來說,就是給定了一個字符串,在字符串中找到想要的字符串,如一個電話號碼,一個IP地址,一個字段,在爬蟲過程中,如果靈活使用正則表達(dá)式,將極大地提升爬蟲效率。

正則表達(dá)式 描述
^ 匹配字符串的開頭
$ 匹配字符串的末尾。
. 匹配任意字符,除了換行符,當(dāng)re.DOTALL標(biāo)記被指定時,則可以匹配包括換行符的任意字符。
[…] 用來表示一組字符,單獨列出:[amk] 匹配 ‘a(chǎn)',‘m'或'k'
[^…] 不在[]中的字符:[^abc] 匹配除了a,b,c之外的字符。
re* 匹配0個或多個的表達(dá)式。
re+ 匹配1個或多個的表達(dá)式。
re? 匹配0個或1個由前面的正則表達(dá)式定義的片段,非貪婪方式
re{ n}
re{ n,} 精確匹配n個前面表達(dá)式。
re{ n, m} 匹配 n 到 m 次由前面的正則表達(dá)式定義的片段,貪婪方式
a b
(re) G匹配括號內(nèi)的表達(dá)式,也表示一個組
(?imx) 正則表達(dá)式包含三種可選標(biāo)志:i, m, 或 x 。只影響括號中的區(qū)域。
(?-imx) 正則表達(dá)式關(guān)閉 i, m, 或 x 可選標(biāo)志。只影響括號中的區(qū)域。
(?: re) 類似 (…), 但是不表示一個組
(?imx: re) 在括號中使用i, m, 或 x 可選標(biāo)志
(?-imx: re) 在括號中不使用i, m, 或 x 可選標(biāo)志
(?#…) 注釋.
(?= re) 前向肯定界定符。如果所含正則表達(dá)式,以 … 表示,在當(dāng)前位置成功匹配時成功,否則失敗。但一旦所含表達(dá)式已經(jīng)嘗試,匹配引擎根本沒有提高;模式的剩余部分還要嘗試界定符的右邊。
(?! re) 前向否定界定符。與肯定界定符相反;當(dāng)所含表達(dá)式不能在字符串當(dāng)前位置匹配時成功
(?> re) 匹配的獨立模式,省去回溯。
\w 匹配字母數(shù)字
\W 匹配非字母數(shù)字
\s 匹配任意空白字符,等價于 [\t\n\r\f].
\S 匹配任意非空字符
\d 匹配任意數(shù)字,等價于 [0-9].
\D 匹配任意非數(shù)字
\A 匹配字符串開始
\Z 匹配字符串結(jié)束,如果是存在換行,只匹配到換行前的結(jié)束字符串。c
\z 匹配字符串結(jié)束
\G 匹配最后匹配完成的位置。
\b 匹配一個單詞邊界,也就是指單詞和空格間的位置。例如, ‘er\b' 可以匹配"never" 中的 ‘er',但不能匹配 “verb” 中的 ‘er'。
\B 匹配非單詞邊界?!甧r\B' 能匹配 “verb” 中的 ‘er',但不能匹配 “never” 中的 ‘er'。
\n, \t, 等. 匹配一個換行符。匹配一個制表符。等
\1…\9 匹配第n個分組的子表達(dá)式。
\10 匹配第n個分組的子表達(dá)式,如果它經(jīng)匹配。否則指的是八進(jìn)制字符碼的表達(dá)式。

Python使用正則表達(dá)式

re.match

import re
str1='123asdfa'
mathch1 = re.match("^[0-9]",str1)
print(mathch1.group())

結(jié)果

1

如果要匹配12,則

import re
str1='12s3asdfa'
mathch1 = re.findall("1[0-9]",str1)
print(mathch1)

結(jié)果

['12']

修改[0-9]為[10-19]是無法匹配到的。

因此,該語句將從頭到尾匹配字符,匹配到則結(jié)束,需要.group才能獲取到匹配到的值。

re.search

import re
str1='1a2s3asdfa'
mathch1 = re.search("^[0-9]",str1)
print(mathch1.group())

結(jié)果

1

從頭到尾匹配字符,直到找到一個匹配,需要.group才能獲取到匹配到的值。re.serach()和re.match()的區(qū)別,re.search()將匹配所有的字符,re.match只匹配字符串的開頭,如果開頭不符合規(guī)則,則返回None。

re.split()

import re
str1='1a2s3asdfa'
mathch1 = re.split("[0-9]",str1)
print(mathch1)

結(jié)果

['', 'a', 's', 'asdfa']

將匹配到的字符作為分隔符分隔字符串。

re.findall()

import re
str1='12s3asdfa'
mathch1 = re.findall("[0-9]",str1)
print(mathch1)

運(yùn)行結(jié)果

['1', '2', '3']

匹配所有符合規(guī)則的字符。

re.sub(pattern, repl, string, count,flag)

import re
str1='12s3asdfa'
mathch1 = re.sub("[0-9]",'|',str1)
print(mathch1)

結(jié)果

||s|asdfa

用后面的字符替換前面的符合規(guī)則的字符。

爬蟲實例

如需要爬取豆瓣熱門電影2019,網(wǎng)址為:https://movie.douban.com/chart

首先鼠標(biāo)右鍵查看網(wǎng)頁源代碼

如我們需要爬取電影的名稱,我們搜索‘

82年生的金智英'

正則表達(dá)式的思路是通過需要爬去的字段旁邊的字符去夾住想要的字符串,如我們需要‘82年生金智英'這穿字符,我們可以用“13px;">”和“<”去夾住它。

搜索該結(jié)構(gòu)可以發(fā)現(xiàn),只有標(biāo)題會用到該結(jié)構(gòu),不會誤爬到其他無關(guān)字符串。下面上爬蟲代碼

import re
import requests
url='https://movie.douban.com/chart'
header={
 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36'
}
result= requests.get(url,headers=header)
data=re.findall(r'13px\;\"\>([^\<]+)',result.text)
print(data)

結(jié)果是一個長度為9的數(shù)組。

['82年生金智英 / Kim Ji-young,Born 1982', '愛爾蘭殺手(港) / 聽說你刷房子了', '小丑起源電影:羅密歐 / Romeo', '情迷紐約下雨天(港) / 紐約有雨', '從前, 有個荷里活(港) / 從前,有個好萊塢...(臺)', '長安盜', '地下6號 / 六尺之下', '喪尸樂園:連環(huán)尸殺(港) / 尸樂園:臟比雙拼(臺)', '浴火的少女畫像(港) / 燃 燒女子的畫像(臺)']

該爬蟲需要用到headers,不然會拒絕連接。

data=re.findall(r'13px\;\"\>([^\<]+)',result.text)

表示在result.text這個長字符串中查找,獲取“13px;">”和“<”之間的字符串," \ "代表轉(zhuǎn)移字符,否則無法識別這些符號。

這個案例可能不是最好的使用正則表達(dá)式的例子,但是想要給大家分享的是,以后如果遇到很復(fù)雜的網(wǎng)絡(luò)結(jié)構(gòu),與其一層一層解析,不妨換一種思路,使用正則表達(dá)式說不定能夠“柳暗花明又一村”。

總結(jié)

到此這篇關(guān)于Python爬蟲教程之利用正則表達(dá)式匹配網(wǎng)頁內(nèi)容的文章就介紹到這了,更多相關(guān)Python爬蟲用正則表達(dá)式匹配網(wǎng)頁內(nèi)容內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用python和opencv的mask實現(xiàn)摳圖疊加

    使用python和opencv的mask實現(xiàn)摳圖疊加

    這篇文章主要介紹了使用python和opencv的mask實現(xiàn)摳圖疊加操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • python實現(xiàn)多個視頻文件合成畫中畫效果

    python實現(xiàn)多個視頻文件合成畫中畫效果

    這篇文章主要為大家詳細(xì)介紹了python實現(xiàn)多個視頻文件合成畫中畫效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • python中urllib.request和requests的使用及區(qū)別詳解

    python中urllib.request和requests的使用及區(qū)別詳解

    這篇文章主要介紹了python中urllib.request和requests的使用及區(qū)別詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • Pytorch中使用TensorBoard詳情

    Pytorch中使用TensorBoard詳情

    這篇文章主要介紹了Pytorch中使用TensorBoard詳情,TensorBoard的前段數(shù)據(jù)顯示和后端數(shù)據(jù)記錄是異步I/O的,即后端程序?qū)?shù)據(jù)寫入到一個文件中,而前端程序讀取文件中的數(shù)據(jù)來進(jìn)行顯示
    2022-06-06
  • pycharm2021激活碼使用教程(永久激活親測可用)

    pycharm2021激活碼使用教程(永久激活親測可用)

    pycharm2021激活碼是一個可以輕松幫助用戶免費激活pycharm2021.1軟件的文件,雖然說pycharm現(xiàn)在只是推出了2021.1的EAP版,但是如果你想先率先體驗一波,那么就可以利用小編提供的這個激活碼來進(jìn)行使用啦,并這個激活碼是永久有效的
    2021-03-03
  • Django Haystack 全文檢索與關(guān)鍵詞高亮的實現(xiàn)

    Django Haystack 全文檢索與關(guān)鍵詞高亮的實現(xiàn)

    這篇文章主要介紹了Django Haystack 全文檢索與關(guān)鍵詞高亮的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • python的debug實用工具 pdb詳解

    python的debug實用工具 pdb詳解

    這篇文章主要介紹了python的debug實用工具 pdb詳解,首先,介紹一下 pdb 調(diào)試,pdb 是 python 的一個內(nèi)置模塊,用于命令行來調(diào)試 Python 代碼,需要的朋友可以參考下
    2019-07-07
  • pandas分組排序 如何獲取第二大的數(shù)據(jù)

    pandas分組排序 如何獲取第二大的數(shù)據(jù)

    這篇文章主要介紹了pandas分組排序 獲取第二大的數(shù)據(jù)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • python3中的函數(shù)與參數(shù)及空值問題

    python3中的函數(shù)與參數(shù)及空值問題

    這篇文章主要介紹了python3-函數(shù)與參數(shù)以及空值,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-11-11
  • 詳解numpy的argmax的具體使用

    詳解numpy的argmax的具體使用

    這篇文章主要介紹了詳解numpy的argmax的具體使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05

最新評論