web-dev-qa-db-ja.com

Python BeautifulSoupは複数のタグをfindAllに与えます

FindAllを使用して、ページに表示される順序で2つのタグを取得する方法を探しています。

現在私は持っています:

import requests
import BeautifulSoup

def get_soup(url):
    request = requests.get(url)
    page = request.text
    soup = BeautifulSoup(page)
    get_tags = soup.findAll('hr' and 'strong')
    for each in get_tags:
        print each

「em」または「strong」のみを含むページでそれを使用すると、これらのタグがすべて取得されます。両方を持つタグで使用すると、「strong」タグが取得されます。

これを行う方法はありますか?私の主な関心事は、タグが見つかる順序を維持することです。

35
DasSnipez

リストを渡すhrまたはstrongタグのいずれかを見つけることができます。

tags = soup.find_all(['hr', 'strong'])
72
jfs

正規表現を使用します。

_import re
get_tags = soup.findAll(re.compile(r'(hr|strong)'))
_

r'(hr|strong)'は、hrタグまたはstrongタグのいずれかを検出します。

8
TerryA