码迷,mamicode.com
首页 > 编程语言 > 详细

【转载】Python BeautifulSoup匹配字符串

时间:2018-01-07 20:16:04      阅读:284      评论:0      收藏:0      [点我收藏+]

标签:test   soup   pytho   www   代码   ase   正则表达式   链接   正则   

作者:鸡仔说
链接:https://www.jianshu.com/p/ceb99aed4b2e
來源:简书

BeautifulSoup中可以通过name和attrs去定位名称和属性,以找到特定的html代码。更值得称赞的是,attrs支持正则表达式。

如:

<div class="cool">
    <h1 class="abc">design</h1>
</div>

 

搜索此行,可以这样写

abcSoup = soup.find(name="h1", attrs={"class":"abc"})

 

但如果情况变成

<div class="cool">
    <h1 class="abc">design</h1>
    <h1 class="abc test1">design photo</h1>
    <h1 class="abc test2">design product</h1>
</div>

 

此时,想一次性找到三个h1,就需要用到正则了。

abcSouplist = soup.find_all(name="h1", attrs={"class":re.compile(r"abc(\s\w+)?")})

 

便可以找到:

<h1 class="abc">design</h1>
<h1 class="abc test1">design photo</h1>
<h1 class="abc test2">design product</h1>

 

还有一种情况,就是判断一种属性是否存在,从而找到该文件。可以通过True和Flase进行筛选。

比如:

<div class="cool">
    <h1 class="abc" id="test">design</h1>
    <h1 class="abc test1">design photo</h1>
    <h1 class="abc test2">design product</h1>
</div>

 

想选择所有不存在id属性的文件,可以写如下表达式筛选。

Soup.find_all("h1",attrs={"id":Flase})

 

就可以筛选出下面两行h1啦

<h1 class="abc test1">design photo</h1>
<h1 class="abc test2">design product</h1>

【转载】Python BeautifulSoup匹配字符串

标签:test   soup   pytho   www   代码   ase   正则表达式   链接   正则   

原文地址:https://www.cnblogs.com/huahuayu/p/8228367.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!