1

海岸 (NS / WS) = EUR35.99 / US$46.09

マネー オブジェクト = EUR42.00 / US$53.79

<div id="t142_1" class="text" >Data Center</div>
<div id="t143_1" class="text" >Coast (NS / WS)</div>
<div id="t144_1" class="text" >EUR35.99 / US$46.09</div>
<div id="t145_1" class="text" >Money Object</div>
<div id="t146_1" class="text" >EUR42.00 / US$53.79</div>
<div id="t147_1" class="text" >Date</div>
<div id="t148_1" class="text" >7-Nov-2013 / 7-Nov-2013</div>
<div id="t149_1" class="text" >Opinions</div>

pyparserまたはbeautifulsoupを使用して、この「Money Object」と「Coast (NS / WS)」のコード値から取得するにはどうすればよいですか?

変数が必要です(例):

coast = 'EUR35.99 / US$46.09'

money_obj = 'EUR42.00 / US$53.79'

編集:

a = soup.find_all(text='Money Object')
for i in a:
    print i.find_next('div').text

しかし、戻ります:

Change

EUR42.00 / US$53.79

必要な値は 1 つだけです (EUR42.00 / US$53.79)

4

2 に答える 2

1

textHTML の例はどこにありますか:

from bs4 import BeautifulSoup as bs

soup = bs(text)
print soup.find(text='Money Object').find_next('div').text
# EUR42.00 / US$53.79

これは次のように読みます-Money Objectテキストコンテンツとして何かを見つけて、次divのテキストを取得します...

于 2013-01-11T09:49:12.780 に答える
0

使用pyparsing:

from pyparsing import *

data = """\
<div id="t142_1" class="text" >Data Center</div>
<div id="t143_1" class="text" >Coast (NS / WS)</div>
<div id="t144_1" class="text" >EUR35.99 / US$46.09</div>
<div id="t145_1" class="text" >Money Object</div>
<div id="t146_1" class="text" >EUR42.00 / US$53.79</div>
<div id="t147_1" class="text" >Date</div>
<div id="t148_1" class="text" >7-Nov-2013 / 7-Nov-2013</div>
<div id="t149_1" class="text" >Opinions</div>
"""

divS,divE = makeHTMLTags("div")

div = divS + SkipTo(divE).setResultsName("body") + divE
divS.setParseAction( withAttribute(id="t144_1") )

for tokens,start,end in div.scanString(data):
    print "cost = " + tokens.body

divS.setParseAction( withAttribute(id="t146_1") )
for tokens,start,end in div.scanString(data):
    print "money_obj = " + tokens.body

出力:

>>> 
cost = EUR35.99 / US$46.09
money_obj = EUR42.00 / US$53.79
于 2013-01-11T10:11:12.733 に答える