首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

beautiful soup 查找文档树的有关问题

2013-06-26 
beautiful soup 查找文档树的问题下面是我的代码#-*- coding:gbk -*-from bs4 import BeautifulSoupdoc

beautiful soup 查找文档树的问题
下面是我的代码


#-*- coding:gbk -*-
from bs4 import BeautifulSoup

doc = '''
<html>
     <head>
         <title>Page title</title>
     </head>
     <body>
         <p id="firstpara" align="center">
         This is paragraph<b>one</b>
         </p>
         <p id="secondpara" align="blah">
         This is paragraph<b>two</b>
         </p>
      </body>
 </html>
 '''
soup = BeautifulSoup(doc)

body = soup.body

p = body.contents
print p
p1 = body.contents[0]
p2 = p1.next_sibling.next_sibling

if p1 == '\n':
    print 'yes, p1 is \\n'
    print len(p1)
else:
    print p1

if p2 == '\n':
    print 'yes, p2 is \\n'
    print len(p2)
else:
    print p2

p3 = p2.next_sibling

if p3 == '\n':
    print 'yes, p1 is \\n'
    print len(p3)
else:
    print p3

相应的输出:

[u'\n', <p align="center" id="firstpara">
         This is paragraph<b>one</b>
</p>, u'\n', <p align="blah" id="secondpara">
         This is paragraph<b>two</b>
</p>, u'\n']
yes, p1 is \n
1
yes, p2 is \n
1
<p align="blah" id="secondpara">
         This is paragraph<b>two</b>
</p>

我的问题是
为什么p2还是一个换行,它不应该是"<p align="center" id="firstpara">
         This is paragraph<b>one</b>
</p>"吗,还有第一个p3怎么成了第2段了,我觉得应该是第一段才对啊。
求教! Python beautiful?soup
[解决办法]
引用:
相应的输出:

[u'\n', <p align="center" id="firstpara">
         This is paragraph<b>one</b>
</p>, u'\n', <p align="blah" id="secondpara">


         This is paragraph<b>two</b>
</p>, u'\n']
yes, p1 is \n
1
yes, p2 is \n
1
<p align="blah" id="secondpara">
         This is paragraph<b>two</b>
</p>


我的问题是
为什么p2还是一个换行,它不应该是"<p align="center" id="firstpara">
         This is paragraph<b>one</b>
</p>"吗,还有第一个p3怎么成了第2段了,我觉得应该是第一段才对啊。
求教!

body.contents的内容很符合逻辑啊:所有的tag都是一个子节点,tag之间的文本也构成一个子节点。

你既希望p2应该是第一段, 又希望p3也是第一段???

从这个测试得到的结论就是要用有意义的标签(例如<p>, "firstpara", "secondpara"等)来选择节点,而不是用xx[0], next_sibling等依赖于文档排版的手段。

热点排行