如何按类查找元素

2024-04-19 21:37:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用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'

如何消除此错误?


Tags: inpydivif属性html错误line
3条回答

更新日期:2016 在最新版本的beautifulsoup中,“findAll”方法已重命名为 “全部查找”。Link to official documentation

List of method names changed

因此答案是

soup.find_all("html_element", class_="your_class_name")

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

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

从文档中:

As of Beautiful Soup 4.1.2, you can search by CSS class using the keyword argumentclass_

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

在这种情况下是:

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

它还将适用于:

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

相关问题 更多 >