从确实的网站上刮掉薪水

时间:2018-10-24 01:04:31

标签: python-3.x web-scraping beautifulsoup

我正尝试使用精美的汤料从确实的网站上抓薪水。

工资为:

<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>
            &nbsp;-&nbsp;
            <span>Full-time,&nbsp;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)

但是我没有薪水,因为我的跨度没有属性。谁能帮忙。

2 个答案:

答案 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