【问题标题】:Not getting desired text from BeautifulSoup没有从 BeautifulSoup 获得所需的文本
【发布时间】:2015-12-07 08:10:09
【问题描述】:
            <h3 class="jd_header3 text" style="font-size: 12px;">
               Shift Pattern:
              </h3>
              <ul class="jd_NoBulletinRight">
               <li style="font-size:11px;">
                <span class="text">
                 No Shift
                </span>
               </li>
              </ul>
              <h3 class="jd_header3 text" style="align:left;font-size:12px;">
               Salary:
              </h3>
              <ul class="jd_NoBulletinRight">
               <li>
                <table border="0" cellpadding="0" cellspacing="0">
                 <tbody>
                  <tr>
                   <td align="left" style="word-wrap: break-word;font-size: 11px;" valign="top">
                    <span class="text">
                     S$3,500.00
                     <span class="text">
                      -
                     </span>
                     S$5,400.00
                    </span>
                   </td>
                  </tr>
                 </tbody>
                </table>
               </li>
              </ul>

这是我的 BeautifulSoup 树的一部分。我希望得到 S$3500 - S$5400 的薪水。按照here 的建议,我使用以下代码:

salary = bsObj.find(text="Salary:").parent.nextSibling.find("td").get_text()
print(salary)

我得到错误:

AttributeError: 'int' object has no attribute 'get_text'

但是当我简单地打印出整数时:

salary = bsObj.find(text="Salary:").parent.nextSibling.find("td")
print(salary)

我明白了:

-1

这不是我想要的。我已经使用 Selenium 来获取页面,所以任何 javascript 都已经加载。

有什么想法吗?

【问题讨论】:

    标签: python selenium beautifulsoup


    【解决方案1】:

    试试下面的代码,但是我不认为你的代码可以得到你期望的输出:

    >>> bsObj.find('td', {'align': "left"}).text
    '\n\n                     S$3,500.00\n                     \n                      -\n                     \n                     S$5,400.00
    \n                    \n'
    
    >>> ' '.join(bsObj.find('td', {'align': "left"}).text.split())
    'S$3,500.00 - S$5,400.00'
    

    【讨论】:

      【解决方案2】:

      不确定这个“get_text”属性,但是对于 BeautifulSoup,我非常依赖.text,如下所示。这是你要找的吗?

      s = '''<html here>'''
      soup = BeautifulSoup(s, 'html.parser')
      bsObj = soup.findAll('td')
      for i in bsObj:
          print(i.text)
      
      >>> 
      
      
                           S$3,500.00
      
                            -
      
                           S$5,400.00
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-06-28
        • 2020-05-14
        • 1970-01-01
        • 1970-01-01
        • 2017-09-27
        • 1970-01-01
        • 2020-07-23
        相关资源
        最近更新 更多