0

乱雑な HTML ファイルから次の行を検索します。

    <span id="fooPack1_xpl01_name11">150.00 FTL</span>
    <span id="fooPack1_xpl02_name11">350.00 FTL</span>
    <span id="fooPack1_xpl03_name11">250.00 FTL</span>
    <span id="fooPack1_xpl04_name11">230.00 FTL</span>

BeautifulSoup と re を使用して、文字列を検索して見つけます。

     tags = soup.find_all('span', id=re.compile(r'[fooPack1_xpl04_name11]\d+'))

しかし明らかに、その文字列の共通部分は最初と最後にあり、その部分は常に途中で変化します。「fooPack1_xpl」+(別の文字列)+「_name11」を検索するように再検索パターンを再構築するにはどうすればよいですか?

ありがとう。

// 編集 //

次のクエリを実行すると:

    <span id="FullView1_spl02_Stack_4">03/04/12</span>
    <span id="FullView1_spl03_Stack_4">01/03/11</span>
    <span id="FullView1_spl04_Stack_4">02/25/02</span>
    <span id="FullView1_spl05_Stack_4">07/16/04</span>
    <span id="FullView1_spl01_Stack32">999.00 SPL</span>
    <span id="FullView1_spl02_Stack82">150.00 XPP</span>
    <span id="FullView1_spl03_Stack82">350.00 XPP</span>
    <span id="FullView1_spl04_Stack82">450.00 XPP</span>
    <span id="FullView1_spl05_Stack82">550.00 XPP</span>
    <span id="FullView1_spl06_Stack82">650.00 XPP</span>
    <span id="FullView1_spl07_Stack22">888.00 SPL</span>
    <span id="FullView1_spl202_stckFriendName">Red Car</span>
    <span id="FullView1_spl203_stckFriendName">Green Car</span>
    <span id="FullView1_spl204_stckFriendName">Blue Car</span>

と:

     foo=soup.findAll('span', id=re.compile(r'FullView1_spl\d+_stack82'))

次の結果が得られます。

    <span id="FullView1_spl204_stckFriendName">Blue Car</span>
    <span id="FullView1_spl02_Stack82">150.00 XPP</span>
    <span id="FullView1_spl03_Stack82">350.00 XPP</span>
    <span id="FullView1_spl04_Stack82">450.00 XPP</span>
    <span id="FullView1_spl05_Stack82">550.00 XPP</span>
    <span id="FullView1_spl06_Stack82">650.00 XPP</span>

明らかに、最上位の要素を検出する必要はありません。これが唯一の問題です。

4

1 に答える 1

0

あなたはほとんどそこにいます。fooPack1_xpl数字の後に を検索したい場合は_name11、次のようにします。

re.compile(r'fooPack1_xpl\d+_name11')

\d+数字が期待される場所に for を配置し、それ以外の場合は検索していたリテラル文字列を配置したことに注意してください。

于 2012-04-04T23:39:35.027 に答える