如何按类查找元素

新手上路,请多包涵

我在使用 Beautifulsoup 解析具有“class”属性的 HTML 元素时遇到问题。代码看起来像这样

soup = BeautifulSoup(sdata)
mydivs = soup.findAll('div')
for div in mydivs:
    if (div["class"] == "stylelistrow"):
        print div

我在脚本完成“之后”在同一行收到错误。

 File "./beautifulcoding.py", line 130, in getlanguage
  if (div["class"] == "stylelistrow"):
File "/usr/local/lib/python2.6/dist-packages/BeautifulSoup.py", line 599, in __getitem__
   return self._getAttrMap()[key]
KeyError: 'class'

我如何摆脱这个错误?

原文由 Neo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 258
2 个回答

您可以使用 BS3 优化搜索以仅查找具有给定类的那些 div:

 mydivs = soup.find_all("div", {"class": "stylelistrow"})

原文由 Klaus Byskov Pedersen 发布,翻译遵循 CC BY-SA 4.0 许可协议

从文档中:

从 Beautiful Soup 4.1.2 开始,您可以使用关键字参数 class_ 按 CSS 类进行搜索:

 soup.find_all("a", class_="sister")

在这种情况下是:

 soup.find_all("div", class_="stylelistrow")

它也适用于:

 soup.find_all("div", class_="stylelistrowone stylelistrowtwo")

原文由 jmunsch 发布,翻译遵循 CC BY-SA 4.0 许可协议

推荐问题