【发布时间】:2014-05-08 17:49:54
【问题描述】:
我正在使用 Python 和 BeautifulSoup 进行网页抓取。
假设我要抓取以下 html 代码:
<body>
<div class="product">Product 1</div>
<div class="product">Product 2</div>
<div class="product special">Product 3</div>
<div class="product special">Product 4</div>
</body>
使用 BeautifulSoup,我只想找到属性为 class="product" 的产品 (仅限产品 1 和 2),而不是“特殊”产品
如果我执行以下操作:
result = soup.find_all('div', {'class': 'product'})
结果包括所有产品(1、2、3 和 4)。
我应该怎么做才能找到类别与“产品”完全匹配的产品??
我运行的代码:
from bs4 import BeautifulSoup
import re
text = """
<body>
<div class="product">Product 1</div>
<div class="product">Product 2</div>
<div class="product special">Product 3</div>
<div class="product special">Product 4</div>
</body>"""
soup = BeautifulSoup(text)
result = soup.findAll(attrs={'class': re.compile(r"^product$")})
print result
输出:
[<div class="product">Product 1</div>, <div class="product">Product 2</div>, <div class="product special">Product 3</div>, <div class="product special">Product 4</div>]
【问题讨论】:
标签: python html regex web-scraping beautifulsoup