python - 基于背景颜色的网页抓取html行?
问题描述
我目前是使用 Python 进行网络抓取的新手。如图所示属于示例 HTML 代码。
<div class="bb-fl" style="background:Tomato;width:0.63px" title="10"></div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3"></div>,
<div class="bb-fl" style="background:Tomato;width:1.14px" title="18"></div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3"></div>,
<div class="bb-fl" style="background:Tomato;width:1.52px" title="24"></div>,
我想使用 beautifulsoup 来查找具有相同类(bb-fl)的行,并且只返回具有以下内容的行:style="background:SkyBlue"
目前我已经弄清楚如何使用以下行返回所有具有“bb-fl”类的 HTML 代码行。
soup.find_all('div',{'class':'bb-fl'})
解决方案
您可以通过在此处使用一些正则表达式逻辑来实现:
from bs4 import BeautifulSoup
import re
html = """<div class="bb-fl" style="background:Tomato;width:0.63px" title="10"></div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3"></div>,
<div class="bb-fl" style="background:Tomato;width:1.14px" title="18"></div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3"></div>,
<div class="bb-fl" style="background:Tomato;width:1.52px" title="24"></div>,"""
soup = BeautifulSoup(html)
#Find all divs which style attribute contains ...
soup.find_all('div', style = re.compile("background:SkyBlue"))
结果 :
[<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3"></div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3"></div>]
无论其他样式值可能是什么,它都会起作用。
推荐阅读
- javascript - 在通过 mergeResolvers 导入的外部解析器文件中使用 MongoDB 集合变量时的 ReferenceError
- regex - Perl 子程序和 if-else 块只计算 else 块
- javascript - 使用猫鼬填充过滤数据
- jquery - Django 表单 ChoiceField 允许通过 jquery 进行动态选择
- javascript - 将 HTML 内容读入 Javascript 字符串
- laravel - 无法上传视频文件
- python - 获取所需字母任一侧的字符串
- angular - 如何下载我的服务器(springboot)上生成的角度pdf文件?
- java - 试图在 android studio 中制作一个聊天应用程序,但我无法附加文本
- flutter - 有没有办法可以在一定的时间间隔内连续更改一些文本?