1. 程式人生 > >【教程】BeautifulSoup中使用正則表示式去搜索多種可能的關鍵字

【教程】BeautifulSoup中使用正則表示式去搜索多種可能的關鍵字

【背景】

折騰過基本的BeautifulSoup的人,知道,可以通過指定對應的name和attrs去搜索,特定的名字和屬性,以找到所需要的部分的html程式碼。

但是,有時候,會遇到,對於要處理的內容中,其name或attr的值,有多種可能,尤其是符合某一規律,此時,就無法寫成固定的值了。

所以,就可以藉助正則表示式來解決此問題。

【舉例說明】

比如,原先教程:

中的html:

<div class="icon_col">
        <h1 class="h1user">crifan</h1>
</div>

對應的BeautifulSoup程式碼如下:

h1userSoup = soup.find(name="h1", attrs={"class":"h1user"});

而如果html是這種:

<div class="icon_col">
        <h1 class="h1user">crifan</h1>
        <h1 class="h1user test1">crifan 123</h1>
        <h1 class="h1user test2">crifan 456</h1>
</div>

那麼想要一次性地找到所有的,符合條件的h1的部分的程式碼,則之前的寫法,就只能找到單個的class="h1user"的部分,剩下的兩個

class="h1user test1"

class="h1user test2"

就找不到了。

那麼,此時,就可以用到,BeautifulSoup中非常好用的,非常強大的功能:

attrs中支援正則表示式的寫法

了。

就可以寫成:

h1userSoupList = soup.findAll(name="h1", attrs={"class":re.compile(r"h1user(\s\w+)?")});

就可以一次性地,找到:

class="h1user"

class="h1user test1"

class="h1user test2"

了。

相關推薦

教程BeautifulSoup使用表示式多種可能關鍵字

【背景】 折騰過基本的BeautifulSoup的人,知道,可以通過指定對應的name和attrs去搜索,特定的名字和屬性,以找到所需要的部分的html程式碼。 但是,有時候,會遇到,對於要處理的內容中,其name或attr的值,有多種可能,尤其是符合某一規律,此時,

1000行程式碼徒手寫表示式引擎1--JAVA表示式的使用

簡介: 本文是系列部落格的第一篇,主要講解和分析正則表示式規則以及JAVA中原生正則表示式引擎的使用。在後續的文章中會涉及基於NFA的正則表示式引擎內部的工作原理,並在此基礎上用1000行左右的JAVA程式碼,實現一個支援常用功能的正則表示式引擎。它支援貪婪匹配和懶惰匹配;支援零寬度字元(如“\b”, “\B

2017-11+10 JS表示式詳解

在JS的開發過程中,很多時候都需要驗證表單的正確性;使用正則表示式能夠很好的簡化表單的驗證過程。 在JS中,內建了 RegExp 物件,用來進行正則匹配。 一. RegExp 物件的使用

1000行代碼徒手寫表達式引擎1--JAVA表達式的使用

基礎上 unicode 要求 [1] 分配 find 通過 images char 簡介: 本文是系列博客的第一篇,主要講解和分析正則表達式規則以及JAVA中原生正則表達式引擎的使用。在後續的文章中會涉及基於NFA的正則表達式引擎內部的工作原理,並在此基礎上用1000行左右

RegExpJavaScript表達式判斷匹配規則以及常用方法

返回 空字符串 tro true 正則表達式 str 本地 大小 表示範圍 字符串是編程時涉及到的最多的一種數據結構,對字符串進行操作的需求幾乎無處不在。 正則表達式是一種用來匹配字符串的強有力的武器。它的設計思想是用一種描述性的語言來給字符串定義一個規則,凡是符合規則的字

python—爬蟲學習_2(表示式篇)_2(practice)

習題來源:hackerrank  Matching Anything But a Newline(.的用法) answer :     regex_pattern = r"^(.{3}\.){3}.{3}$" Matching Digits &am

python—爬蟲學習_2(表示式篇)1.基礎知識

一、簡介 正則表示式本身是一種小型的、高度專業化的程式語言,而在python中,通過內嵌整合re模組,程式媛們可以直接呼叫來實現正則匹配。正則表示式模式被編譯成一系列的位元組碼,然後由用C編寫的匹配引擎執行。 r標識代表後面是正則的語句 二、正則表示式中常用的字元含義 1、普通字元和

前端JavaScript與表示式

一、正則表示式(regular expression簡稱res) 1、定義 一個正則表示式就是由普通字元以及特殊字元(稱為元字元)組成的文字模式。該模式描述在查詢文字主體時待匹配的一個或多個字串。正則表示式作為一個模板,將某個字元模式與所搜尋的字串進行匹配。 2、作用 正則表示式

Python之表示式(re模組)

【轉】Python之正則表示式(re模組) 本節內容 re模組介紹 使用re模組的步驟 re模組簡單應用示例 關於匹配物件的說明 說說正則表示式字串前的r字首 re模組綜合應用例項 參考文件 提示: 由於該站對MARKDOWN的表格支援的不是很好,所以本文中的表

python—爬蟲學習_2(表示式篇)3.re模組函式的深入理解

1. re.complie() 作用:如果需要重複地使用某個正則表示式,那麼你可以先將該正則表示式編譯成模式物件。complie()函式就幫助我們將正則表示式,編譯成為一個pattern物件。 2.re.search(pattern ,string) regex.search(strin

JavaScrpit字串和表示式的4個相關方法

字串和正則表示式的4個方法:split( );  search( );   match( );   replace( ); 下面介紹4個方法的各自作用: split( );        : 可以將一個字串拆分為

LeetcodePython實現表示式匹配

給定一個字串 (s) 和一個字元模式 (p)。實現支援 ‘.’ 和 ‘*’ 的正則表示式匹配。 ‘.’ 匹配任意單個字元。 ‘*’ 匹配零個或多個前面的元素。 匹配應該覆蓋整個字串 (s) ,而不

Go常用的表示式

/*********************************************************** *名字 golang 正則工具 *功能 支援數字,字母,字元,常用資訊(電話,郵箱)等的正則匹配 *作者 Razil *****************

Struts2validation.xml 表示式不起作用

配置檔案中,<param name=''></param>標籤中的name屬性值有兩種,regexExpression和expression,當配置檔案中的正則表示式不起作用時,可嘗試替換name值; ps:初步學習Struts2,在練習中遇到過這種問

JAVA學習常用的表示式

一、校驗數字的表示式 1 數字:^[0-9]*$ 2 n位的數字:^\d{n}$ 3 至少n位的數字:^\d{n,}$ 4 m-n位的數字:^\d{m,n}$ 5 零和非零開頭的數字:^(0|[1-9][0-9]*)$ 6 非零開頭的最多帶兩位小數的數字:^(

php 表示式詳解

概述 正則表示式是一種描述字串結果的語法規則,是一個特定的格式化模式,可以匹配、替換、擷取匹配的字串。常用的語言基本上都有正則表示式,如JavaScript、java等。其實,只有瞭解一種語言的正則使用,其他語言的正則使用起來,就相對簡單些。文字主要圍繞解決下面問題展開。 有哪些常用的

Python表示式re.match的用法

re.match(pattern, string, flags) 第一個引數是正則表示式,如果匹配成功,則返回一個Match,否則返回一個None; 第二個引數表示要匹配的字串; 第三個引數是標緻位,用於控制正則表示式的匹配方式,如:是否區分大小寫,多行匹配等等。 需要特別注意的是,這個方法並不是完

WPF表示式的部分應用

無論在哪一種語言中,正則表示式在一定程度上都可以簡化程式碼程式設計。以下為在WPF中的部分應用。 如var sql = new System.Text.RegularExpressions.Regex("[\\r\\n]").Replace(str, " "); 表示對str字串中匹配換行符

Python表示式常用函式sub,search,findall,split等使用

1.原生字串r python中字串前面加上 r 表示原生字串,不會轉義。與大多數程式語言相同,正則表示式裡使用"\"作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元"\",那麼使用程式語言表示的正則表示式裡將需要4個反斜槓"\\":前兩個和後兩個分別用於在程式語言裡轉義成反斜

Python表示式對單個字元,多個字元,匹配邊界等使用

         Regular Expression,正則表示式,又稱正規表示式、正規表示法、正則表示式、規則表示式、常規表示法(英語:Regular Expression,在程式碼中常簡寫為regex、regexp或RE),是電腦科學的一個概