如何通过类名查找元素

668 投票
20 回答
1168468 浏览
提问于 2025-04-16 12:04

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

我该怎么解决这个错误呢?

20 个回答

82

更新:2016年 在最新版本的beautifulsoup中,原来的'method findAll'方法被改名为'find_all'。点击这里查看官方文档

方法名称更改列表

所以答案是

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

根据文档:

从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")
1060

你可以通过使用BS3来精确搜索,只找到带有特定类名的div元素:

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

撰写回答