【问题标题】:BeautifulSoup findAll tags with mutliple classesBeautifulSoup findAll 标签有多个类
【发布时间】:2015-11-17 07:21:03
【问题描述】:

我正在尝试循环浏览网站上的搜索结果列表。搜索结果嵌套在具有两个不同类的 div 标签下,“result-item standard”和“result-item standard basic ad”。我希望按出现的顺序找到搜索结果。如何在我的 findAll 中包含多个类?还是有其他方法可以做到这一点?

我当前的代码如下:

for div in soup.findAll("div", {"class": ["result-item standard", "result-item standard  basic ad"]}):
    #item_title = " ".join(div.h2.a.text.split())
    item = div.h2.a.text.split()
    item_year = item[0]
    item_make = item[1]

【问题讨论】:

标签: python beautifulsoup findall


【解决方案1】:

我只想写一个CSS selector:

for div in soup.select("div.result-item.standard"):
    # ...

div.result-item.standard 将匹配具有result-itemstandard 类的div 元素。

【讨论】:

    【解决方案2】:

    可能会慢一点,但使用class_ 选择器:

    divs = soup.find_all("div", class_="result-item standard") + soup.find_all("div", class_="result-item standard  basic ad")     
    for div in divs:
        item = div.h2.a.text.split()
        item_year = item[0]
        item_make = item[1]
    

    您使用的语法是 BS3,此答案中的语法是 BS4。

    【讨论】: