Python爬虫中BeautifulSoup正则表达式的使用

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>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容