2013-12-18 19 views
23

findAllを使用して2つのタグをページに表示される順序で取得する方法を探しています。Python BeautifulSoupは複数のタグをfindAllに渡します

現在、私が持っている:

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 

私は両方とのいずれかに使用している場合のみ、「日」またはそれに「強い」とのページにそれは、私にこれらのタグの全てを取得することを使用している場合それは '強い'タグを取得します。

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

答えて

50

あなたは可能性がpass a list、:

tags = soup.find_all(['hr', 'strong']) 
+1

私はsoup.findAll([ '時間'、 '強い']は)仕事をすることができ、find_allが実行されないと思います。 – r0sk

+5

@ r0sk: 'find_all()'は、beautifulsoup4の正しい名前です。答えのリンクをクリックします。 'findAll()'はBeautifulSoup 3がBeautiful Soup 4に置き換えられたものです。 – jfs

2

使用正規表現:

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

表現r'(hr|strong)'hrタグやstrongタグのどちらかを見つけます。 hrstrongのいずれかのタグを見つけるため

関連する問題