我正尝试使用精美的汤料从确实的网站上抓薪水。
工资为:
<div id="vjs-jobinfo">
<div id="vjs-jobtitle">Senior Data Scientist/ Machine learning engineer</div>
<div>
<span id="vjs-cn">Intellify</span>
<span id="vjs-loc"> - Sydney NSW</span>
</div>
<div>
<span>$120,000 - $160,000 a year</span>
-
<span>Full-time, Part-time</span>
</div>
</div>
我的解决方案:
new_soup = BeautifulSoup(new_html, 'html.parser', from_encoding='utf-8')
for titles in new_soup.find_all('div',{'id':'vjs-jobtitle'}):
print(titles.text)
print('\n')
for company_name in new_soup.find_all('span',{'id':'vjs-cn'}):
print(company_name.text)
print('\n')
for company_location in new_soup.find_all('span',{'id':'vjs-loc'}):
print(company_location.text)
但是我没有薪水,因为我的跨度没有属性。谁能帮忙。
答案 0 :(得分:2)
您可以使用CSS样式的选择器,例如:
new_soup.select_one(“ div#vjs-jobinfo div:nth-of-type(3)”)。findChild()。text
答案 1 :(得分:1)
一种解决方案是,因为您知道工资在第三个span
标签中,所以您可以直接访问
all_span=new_soup.find_all("span")
salary=all_span[2].getText()
#$120,000 - $160,000 a year
编辑:由于您知道薪水必须以美元符号开头,因此您也可以使用正则表达式来查找
salary=new_soup.find('span', text=re.compile(r'^\$')).getText()
#$120,000 - $160,000 a year