Python BeautifulSoup findAll by“class”属性

时间:2013-11-14 03:36:31

标签: python web-scraping beautifulsoup

我想做以下代码,这是BS文档要做的,唯一的问题是“类”这个词不只是一个单词。它可以在HTML中找到,但它也是一个python关键字,导致此代码抛出错误。

那我该如何做呢?

soup.findAll('ul', class="score")

3 个答案:

答案 0 :(得分:17)

您的问题似乎是您希望汤中的find_all找到与您的字符串完全匹配的内容。 In fact

  

当您搜索与某个CSS类匹配的标记时,您就是   匹配任何CSS类:

您可以正确搜索类标签,如@alKid所说。您还可以使用class_关键字arg。

进行搜索
soup.find_all('ul', class_="score")

答案 1 :(得分:10)

以下是如何操作:

soup.find_all('ul', {'class':"score"})

答案 2 :(得分:0)

如果OP有兴趣通过finalScore来获得ul,则可以用几行gazpacho解决此问题:

from gazpacho import Soup

html = """\
<div>
    <ul class="score header" id="400488971-linescoreHeader" style="display: block">
      <li>1</li>
      <li>2</li>
      <li>3</li>
      <li>4</li>
      <li id="400488971-lshot"> </li>
      <li class="finalScore">T</li>
    </ul>
<div>
"""

soup = Soup(html)
soup.find("ul", {"class": "score"}).find("li", {"class": "finalScore"}).text

哪个会输出:

'T'