我使用Python和BeautifulSoup进行网页抓取。
例如,我有以下html代码:
<ul>
<li class="product-item">Product A</li>
<li class="product-item child-product">Product B</li>
<li class="product-item child-product">Product C</li>
<li class="product-item child-product">Product D</li>
</ul>
使用BeautifulSoup,我只想找到属性为class =&#34; product-item&#34; (仅限产品A),而不是儿童产品&#39;
如果我执行以下操作:
product_list = soup.find_all('li', {'class': 'product-item'})
结果包括所有产品A,B,C和D.
我已经阅读了另一个post about the same question,我按照建议操作并执行了以下操作,但结果相同......它会返回所有产品。
product_list = soup.findAll(attrs={'class': re.compile(r"^product-item$")})
我该怎么做才能找到类别与产品项目完全匹配的产品&#39; ??
答案 0 :(得分:0)
不是100%的BeautifulSoup解决方案,但你可以使用bs4 +常规理解来做你需要的事情;
>>> [e for e in soup.find_all('li', class_='product-item') if len(e['class'])==1]
[<li class="product-item">Product A</li>]