如何将find_all与BeautifulSoup一起使用以搜索多个标签或类?

时间:2019-02-17 12:26:33

标签: python beautifulsoup

我正在抓取一些格式如下的HTML:

<div class="doccontent">
<h3> Section Title 1 </h3>
<div class="line"> My first line </div>
<div class="line> My second line </div>
<div class="linenumber"> text i don't need </div>

<h3> Section Title 2 </h3>
<div class="line"> My third line </div>
<div class="chapter">Chapter four</div>
<div class="line> My fourth line </div>
</div>

我只想捕获h3和class =“ line”文本。我尝试了两种方法。第一个:

for lines in full_text:
    for booktitle in lines.find("h3"):
        linesArr.append(booktitle)
    for line in lines.find_all(class_='line'):
        linesArr.append(line)

这会将所有书名追加到列表的开头,然后开始在各行中使用。

第二个:

for lines in full_text:
    for line in lines.find_all(['h3', class_="line"]):
        linesArr.append(line)

第二个对我来说似乎更有希望,但是存在语法错误.BS4文档没有涵盖如何搜索标签和类的列表。任何帮助,不胜感激。

1 个答案:

答案 0 :(得分:2)

如评论中所述,您可以使用css或语法指定多个css选择器并将其传递给选择器

data = [item.text for item in soup.select("h3 , .line")]