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

Python HTML解析,使用BeautifulSoup的嵌套div问题,python,beautifulsoup,Python,Beautifulsoup,我试图提取特定的嵌套div类和相应的h3属性salary值 因此,我尝试了按类搜索的方法 soup.find_all('div',{'class':"vac_display_field"} 返回一个空列表 代码片段: <div class="vac_display_field"> <h3> Salary </h3> <div class="vac_display_field_value">

我试图提取特定的嵌套div类和相应的h3属性salary值

因此,我尝试了按类搜索的方法

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>

示例

首先确保正确实例化了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标记是从顶部开始的第二个: 因此,使用简单的索引表示法,您的代码可以反映这一点:

Salary_info = soup.find_all(class_='vac_display_field')[1]
然后输出文本:

for info in Salary_info:
    print info.get_text()

HTH.

您的代码很好,您确定您正确初始化了汤吗?使用正确的html?将代码添加到问题中,问题可能在于如何获取源代码。另外,工资不在h3中,您有明显的编码问题文本工资是,实际工资是not@mangoHero1,以及相应的h3属性薪资值。OP也没有提供mcve,所以他们的问题没有答案,因为我们不知道他们使用的是什么LIB,BeautifulSoup的什么版本,或者基本上他们的代码。@PadraicCunningham所以你否决了我的答案?如果他真的提供了他想要的代码,我非常清楚地理解他想要什么,尽管措辞有点偏离。然后,他可以根据需要调整代码。因此,我尝试了按类搜索方法soup.find_all'div',{class':vac_display_field},它返回一个空列表。那么,你能解释一下soup.find_all'div',class='vac_display_field'在soup.find_all'div',{class':vac_display_field}不起作用的地方是如何起作用的吗?@padraickingham你误解了我的答案。find_all方法的调用方式没有什么区别,但这意味着还有另一种方法可以调用它。重读顶部的部分。我强调的第一件事是汤需要正确实例化。然后,我继续演示如何获得所需的输出。请允许我再次重申:您需要关闭方法调用的括号。