首页 > 解决方案 > 基于背景颜色的网页抓取html行?

问题描述

我目前是使用 Python 进行网络抓取的新手。如图所示属于示例 HTML 代码。

<div class="bb-fl" style="background:Tomato;width:0.63px" title="10">​&lt;/div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3">​&lt;/div>,
<div class="bb-fl" style="background:Tomato;width:1.14px" title="18">​&lt;/div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3">​&lt;/div>,
<div class="bb-fl" style="background:Tomato;width:1.52px" title="24">​&lt;/div>,

我想使用 beautifulsoup 来查找具有相同类(bb-fl)的行,并且只返回具有以下内容的行:style="background:SkyBlue"

目前我已经弄清楚如何使用以下行返回所有具有“bb-fl”类的 HTML 代码行。

soup.find_all('div',{'class':'bb-fl'})

标签: pythonwebscreen-scraping

解决方案


您可以通过在此处使用一些正则表达式逻辑来实现:

from bs4 import BeautifulSoup
import re

html = """<div class="bb-fl" style="background:Tomato;width:0.63px" title="10">​&lt;/div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3">​&lt;/div>,
<div class="bb-fl" style="background:Tomato;width:1.14px" title="18">​&lt;/div>,
<div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3">​&lt;/div>,
<div class="bb-fl" style="background:Tomato;width:1.52px" title="24">​&lt;/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">​&lt;/div>,
 <div class="bb-fl" style="background:SkyBlue;width:0.19px" title="3">​&lt;/div>]

无论其他样式值可能是什么,它都会起作用。


推荐阅读