我在使用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'
如何消除这个错误呢?
从文档中可以看到:
从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")
截至BeautifulSoup 4+,
如果你只有一个类名,你可以像这样把类名作为参数传递:
mydivs = soup.find_all('div', 'class_name')
或者如果你有多个类名,只需将类名列表作为参数传递:
mydivs = soup.find_all('div', ['class1', 'class2'])
从文档中可以看到:
从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")