如何使用BeautifulSoup来抚养孩子?

时间:2017-04-27 17:26:45

标签: python-3.x beautifulsoup

在抓取操作期间,我注意到有几页有雀巢孩子。我目前的代码并没有将这些孩子置于他们的父母之下。我如何将这些孩子和父母一起偎依?我的代码也没有分组" p"当它们在HTML中逐步跟随时,它们会一起标记。我还注意到了' li'使用当前代码拾取标记两次。

HTML

<div class="detail-item">
     <h3>Family Name</h3>
        <p>Some Family Name<br></p>
        <p>Sub Family Name<br></p>
        <p>Sub Family Name<br></p>
           <ul>
              <li>1st Child Name</li>
              <li>2nd Child Name</li>
              <li>3rd Child Name</li>
           </ul>
        <p>Some Other Family Name<br></p>
           <ul>
              <li>1st Child Name</li>
              <li>2nd Child Name</li>
              <li>3rd Child Name</li>
           </ul>
 </div>

<div class="detail-item">
     <h3>Family Name</h3>
        <p>Some Family Name;
        <br>1st Child Name;
        <br>2nd Child Name;
        <br>3rd Child Name
        </p>
   </div>

CODE

for header in primary_details:
    try:
        if 'Family Name' in header.h3.text:
            for p_tag in header.find_all('p', recursive=False):
              print(p_tag.text)
              for li_tag in header.find_all('li', recursive=False):
                print(li_tag.text)
                for a_tag in header.find_all('a', recursive=False):
                  print (a_tag.text)
     except:
         continue

当前输出

网页1:

某些姓氏

子姓名

子姓名

其他一些姓氏

  • 第一个孩子姓名
  • 第二个孩子姓名
  • 第3个孩子姓名

  • 第一个孩子姓名

  • 第二个孩子姓名
  • 第3个孩子姓名

网页2:

某些姓氏;第一个孩子的姓名;第二个孩子的姓名;第三个孩子的姓名

渴望输出

网页1:

某些姓氏

子姓名

子姓名

  • 第一个孩子姓名
  • 第二个孩子姓名
  • 第3个孩子姓名

其他一些姓氏

  • 第一个孩子姓名
  • 第二个孩子姓名
  • 第3个孩子姓名

网页2:

某些姓氏

第一个孩子姓名

第二个孩子的姓名

第3个孩子名字

1 个答案:

答案 0 :(得分:0)

尝试更改缩进

for header in primary_details: try: if 'Family Name' in header.h3.text: for p_tag in header.find_all('p'): print(p_tag.text) for li_tag in header.find_all('li'): print(li_tag.text) for a_tag in header.find_all('a'): print (a_tag.text) except: continue

相关问题