Python的爬蟲包Beautiful Soup中用正則表達(dá)式來搜索
Beautiful Soup使用時(shí),一般可以通過指定對(duì)應(yīng)的name和attrs去搜索,特定的名字和屬性,以找到所需要的部分的html代碼。
但是,有時(shí)候,會(huì)遇到,對(duì)于要處理的內(nèi)容中,其name或attr的值,有多種可能,尤其是符合某一規(guī)律,此時(shí),就無法寫成固定的值了。
所以,就可以借助正則表達(dá)式來解決此問題。
比如,
<div class="icon_col"> <h1 class="h1user">crifan</h1> </div>
對(duì)應(yīng)的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的部分的代碼,則之前的寫法,就只能找到單個(gè)的class="h1user"的部分,剩下的兩個(gè)
class="h1user test1"
和
class="h1user test2"
就找不到了。
那么,此時(shí),就可以用到,BeautifulSoup中非常好用的,非常強(qiáng)大的功能:
attrs中支持正則表達(dá)式的寫法
了。
就可以寫成:
h1userSoupList = soup.findAll(name="h1", attrs={"class":re.compile(r"h1user(\s\w+)?")});
就可以一次性地,找到:
class="h1user" class="h1user test1" class="h1user test2"
了。
<div aria-lable="xxx">
想要查找到對(duì)應(yīng)的此div標(biāo)簽,之前不知道如何實(shí)現(xiàn)。
如果寫成:
sopu.findAll("div", attrs={"aria-lable": "xxx"});
則xxx必須寫出來,如果不寫出來屬性值,也就沒法用上attrs了,就沒法實(shí)現(xiàn)此處查找特性屬性值的標(biāo)簽了。
所以針對(duì):
<div aria-label="5星, 747 份評(píng)分" class="rating" role="img" tabindex="-1"> <div> <span class="rating-star"> </span> <span class="rating-star"> </span> <span class="rating-star"> </span> <span class="rating-star"> </span> <span class="rating-star"> </span> </div> <span class="rating-count"> 747 份評(píng)分 </span> </div>
可以通過:
soup.findAll("div", attrs={"aria-lable": True});
去查找到屬性包含aria-lable的div標(biāo)簽的。
所以,對(duì)于上面的,之前不知道如何處理:
用BeautifulSoup查找未知屬性值,但是已知屬性的名字的標(biāo)簽
則此處,就可以針對(duì):
<div aria-lable="xxx">
去用:
sopu.findAll("div", attrs={"aria-lable": True});
就可以查找到對(duì)應(yīng)的包含屬性aria-lable的div標(biāo)簽了。
- 零基礎(chǔ)寫python爬蟲之神器正則表達(dá)式
- python3爬蟲之入門基礎(chǔ)和正則表達(dá)式
- python爬蟲 正則表達(dá)式使用技巧及爬取個(gè)人博客的實(shí)例講解
- python爬蟲正則表達(dá)式之處理?yè)Q行符
- 玩轉(zhuǎn)python爬蟲之正則表達(dá)式
- Python爬蟲正則表達(dá)式常用符號(hào)和方法
- Python爬蟲之正則表達(dá)式基本用法實(shí)例分析
- Python爬蟲教程之利用正則表達(dá)式匹配網(wǎng)頁(yè)內(nèi)容
- Python 爬蟲學(xué)習(xí)筆記之正則表達(dá)式
- Pyhton爬蟲知識(shí)之正則表達(dá)式詳解
相關(guān)文章
運(yùn)用TensorFlow進(jìn)行簡(jiǎn)單實(shí)現(xiàn)線性回歸、梯度下降示例
這篇文章主要介紹了運(yùn)用TensorFlow進(jìn)行簡(jiǎn)單實(shí)現(xiàn)線性回歸、梯度下降示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-03-03Django的性能優(yōu)化實(shí)現(xiàn)解析
這篇文章主要介紹了Django的性能優(yōu)化實(shí)現(xiàn)解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-07-07非常簡(jiǎn)單的Python識(shí)別圖片驗(yàn)證碼實(shí)現(xiàn)過程
這篇文章主要介紹了Python驗(yàn)證碼識(shí)別實(shí)現(xiàn)過程,只需要幾行代碼就可以實(shí)現(xiàn),過程非常簡(jiǎn)單,有需要的朋友可以借鑒參考下,希望可以有所幫助2021-09-09python3實(shí)現(xiàn)字符串操作的實(shí)例代碼
這篇文章主要介紹了python3實(shí)現(xiàn)字符串操作的實(shí)例代碼,需要的朋友可以參考下2019-04-04Pytorch使用VGG16模型進(jìn)行預(yù)測(cè)貓狗二分類實(shí)戰(zhàn)
VGG16是Visual Geometry Group的縮寫,它的名字來源于提出該網(wǎng)絡(luò)的實(shí)驗(yàn)室,本文我們將使用PyTorch來實(shí)現(xiàn)VGG16網(wǎng)絡(luò),用于貓狗預(yù)測(cè)的二分類任務(wù),我們將對(duì)VGG16的網(wǎng)絡(luò)結(jié)構(gòu)進(jìn)行適當(dāng)?shù)男薷?以適應(yīng)我們的任務(wù),需要的朋友可以參考下2023-08-08python函數(shù)默認(rèn)參數(shù)使用避坑指南
這篇文章主要為大家介紹了python函數(shù)默認(rèn)參數(shù)使用的踩雷避坑詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07Python實(shí)現(xiàn)的簡(jiǎn)單發(fā)送郵件腳本分享
這篇文章主要介紹了Python實(shí)現(xiàn)的簡(jiǎn)單發(fā)送郵件腳本分享,本文使用smtplib模塊實(shí)現(xiàn)郵件的發(fā)送,需要的朋友可以參考下2014-11-11Python偏函數(shù)Partial function使用方法實(shí)例詳解
這篇文章主要介紹了Python偏函數(shù)Partial function使用方法實(shí)例詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-06-06