beautifulsoup导航树

时间:2016-12-19 01:07:02

标签: python-3.x beautifulsoup

是否可以从

获取字符串
<td class="text">

,但是从标记

导航
<a name="rknjiga"> 

因为它用于定位页面的特定部分。我试过用

soup.find("a", {"name": "aknjiga"}).parent 

但这只能让我升级1级,我的想法是到达第一个 tr 标签,再一次升级层次结构,然后使用.next_sibling将指针放到下一个 tr 标记

<tr>
    <td bgcolor="#CDC5A1">&nbsp;</td>
    <td colspan="2" bgcolor="#CDC5A1"  class="bbrownnaslov1">
        <a name="rknjiga">Poglavlja u knjizi</a> #name rknjiga is used to find section
    </td>
</tr>
<tr>
    <td height="92" valign="top">
        <table width="100%" border="0" cellspacing="2" cellpadding="0">
            <tr>
                <td class="text">
                    <br/>1. Dražić, Ivan; Mujaković, Nermina.<br/>
                </td>
            </tr>
            <tr>
                <td class="text" align="right" valign="bottom">
                    <a href="#top"></a>
                </td>
            </tr>
            <tr>
                <td class="text" align="right" valign="bottom">
                        <img src="images/spacer.gif" width="1" height="1">
                </td>
            </tr>
        </table>
    </td>
</tr>

输出需要以格式:

写入txt文件
  1. Dražić,伊万; Mujaković,Nermina。
  2. Crnković,Dean; MikulićCnknović,Vedrana;罗德里格斯,B。G. ...
  3. 我第一次使用beautifulsoup所以欢迎任何建议!

1 个答案:

答案 0 :(得分:0)

section = soup.find('a', attrs={'name':"rknjiga"})

section.find_next('td',class_="text").get_text(strip=True)

出:

'1. Dražić, Ivan; Mujaković, Nermina.'

或获取所有td:

section.find_all_next('td',class_="text")
  

签名:find_all_next(名称,attrs,字符串,限制,** kwargs)

     

签名:find_next(name,attrs,string,** kwargs)

     

这些方法使用.next_elements来迭代任何标签和   文档中的字符串。 find_all_next()方法   返回所有匹配项,find_next()仅返回第一个匹配项