HTML解析,使用BeautifulSoup嵌套div问题

时间:2016-10-22 16:41:38

标签: python beautifulsoup

我正在尝试提取特定的嵌套div类和相应的h3属性(工资值)。

所以,我尝试了按类方法搜索

soup.find_all('div',{'class':"vac_display_field"}

返回一个空列表。

代码段:

 <div class="vac_display_field">
      <h3>
       Salary
      </h3>
      <div class="vac_display_field_value">
       £27,951 - £30,859
      </div>
 </div>

示例here

1 个答案:

答案 0 :(得分:-1)

首先确保您已正确实例化BeautifulSoup对象。应该看起来像这样:

from bs4 import BeautifulSoup
import requests

url = 'https://www.civilservicejobs.service.gov.uk/csr/index.cgi?SID=cGFnZWNsYXNzPUpvYnMmb3duZXJ0eXBlPWZhaXImY3NvdXJjZT1jc3FzZWFyY2gmcGFnZWFjdGlvbj12aWV3dmFjYnlqb2JsaXN0JnNlYXJjaF9zbGljZV9jdXJyZW50PTEmdXNlcnNlYXJjaGNvbnRleHQ9MjczMzIwMTcmam9ibGlzdF92aWV3X3ZhYz0xNTEyMDAwJm93bmVyPTUwNzAwMDAmcmVxc2lnPTE0NzcxNTIyODItYjAyZmM4ZTgwNzQ2ZTA2NmY5OWM0OTBjMTZhMWNlNjhkZDMwZDU4NA=='
response = requests.get(url)
soup = BeautifulSoup(response.content, 'html.parser') # the 'html.parser' part is optional.

用于刮取div标签的代码看起来是正确的(但它缺少一个右括号)。如果由于某种原因它仍然无法正常工作,请尝试以这种方式调用find_all()方法:

soup.find_all('div', class_='vac_display_field')

如果您查看网页代码,在检查时您会发现所需的div代码是从顶部开始的第二个代码:

Xpath

因此,您的代码可以使用简单的索引表示法反映出来:

Salary_info = soup.find_all(class_='vac_display_field')[1]

然后输出文字:

for info in Salary_info:
    print info.get_text()

HTH。