没有从BeautifulSoup获得所需的文本

时间:2015-12-07 08:10:09

标签: python selenium beautifulsoup

            <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都已加载。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

尝试以下代码,但我不认为您的代码可以获得预期的输出:

>>> 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'

答案 1 :(得分:0)

不确定这个&#34; get_text&#34;属性,但使用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