<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都已加载。
有什么想法吗?
答案 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