解析html、pyparser或BeautifulGroup

2024-05-16 14:24:05 发布

您现在位置:Python中文网/ 问答频道 /正文

46.09欧元/WS=35.09欧元

货币对象=42.00欧元/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)”的代码值中获取?在

我需要变量(例如):

^{pr2}$

编辑:

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

但返回:

Change

EUR42.00 / US$53.79

我只需要一个值(42.00欧元/53.79美元)


Tags: 对象textdividwsobject货币find
2条回答

使用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

输出:

^{pr2}$

其中text是示例HTML:

from bs4 import BeautifulSoup as bs

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

它读作as-find以Money Object作为其文本内容的内容,然后取下一个div的文本。。。在

相关问题 更多 >