首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一个又一个文本的解析(使用)

一个又一个文本的解析(使用)
EN

Stack Overflow用户
提问于 2015-06-30 14:55:11
回答 2查看 73关注 0票数 1

我要解析的HTML如下:

代码语言:javascript
复制
> </td> </tr> <!--MRT--> <tr><td colspan="2" style="border-top: 1px
> Dashed #CCC"><h3>MRT Stations Nearby</h3></td></tr><tr><td
> colspan="2"><table width="602" align="center" cellpadding="0"
> cellspacing="0"><tr><td width="261"><a
> href="/property/propertynearmrt/Boon-Lay-MRT/?t=dl&mid=12" title="Boon
> Lay MRT"><strong>Boon Lay MRT</strong></a><br />Distance :0.07km </td>

从这里开始,我想得到距离(在这里是0.07公里)。我还使用以下代码解析站点名称“Boon”:

代码语言:javascript
复制
   soup2=BeautifulSoup(webpage2) 
   for cell in soup2.findAll('h3'):
        if 'MRT Stations Nearby' == cell.text:         

            for cell2 in cell.findAllNext('strong')[0]:
                print(cell2)

我如何获得下一段文字(距离)?我认为只需将“强”改为(“br/”)就行了,但它不起作用。

对不起,如果这个问题相当愚蠢,任何帮助都将不胜感激。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-30 15:04:12

据我所知,问题的输入是MRT Stations Nearby文本。输出应该是0.07km

在这种情况下,我们的想法是定位MRT Stations Nearby文本,找到tr父文件。在那里,找到下一个tr兄弟,并查找包含Distance文本的元素:

代码语言:javascript
复制
row = soup.find(text="MRT Stations Nearby").find_parent("tr").find_next_sibling("tr")
distance = row.find(text=lambda x: x and x.startswith("Distance"))

print distance.split(":")[-1].strip()
票数 1
EN

Stack Overflow用户

发布于 2015-06-30 15:00:56

你试过for cell2 in cell.findAllNext('br')[0]: ..。我不认为你需要'/‘,因为这仅仅意味着标签是自动关闭的

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31141724

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档