使用BeautifulSoup解析具有相同类的子父div的HTML

0 投票
2 回答
1745 浏览
提问于 2025-04-17 12:29

我有一段HTML代码,我需要从中提取一些数据:

<html>
<head></head>
<body>
<div class="main">
  <div class="utlimate"><p>hello</p></div>
  <div class = "headline"><p>some text</p></div>
   <div class="content">
     <div class = "utimate"> <p>TOP</p>
        <div class ="utlimate"> <p>data1</p></div>
        <div class ="utlimate"> <p>it could be anything</p></div>
        <div class ="utlimate"> <p>not</p></div>
        <div class ="utlimate"> <p></p></div>

     </div>
   </div>
</div>
</body>
</html>

我想要找到一个类名为 <div class="ultimate"><p> 标签,这个标签的内容是 "data1"、"it could be anything" 或 "not"。我为此写的代码是:

soup = BeautifulSoup(HTML_data)     #HTML_data is all html content
first_div = soup.find('div',{"class" : "content"})
second_div = first_div.find('div',{"class" : "utlimate"})
div_list = second_div.findall('div',{"class" : "utlimate"})

但是我在代码的最后一行遇到了一个错误,错误信息是 'NoneType' object is not callable

我该怎么才能只访问这些

呢?请帮帮我。

2 个回答

1

汤是空的吗?

我建议你重新整理一下你的代码,以防止出现这种情况:

soup = BeautifulSoup(HTML_data)     #HTML_data is all html content
if soup ==None:
    //Error
else:
    c = soup.contents
    // Use RE here
2

试试这个:

soup = BeautifulSoup(HTML_data)     #HTML_data is all html content
first_div = soup.find('div',{"class" : "content"})
second_div = first_div.find('div',{"class" : "utimate"})
div_list = second_div.findAll('div',{"class" : "utlimate"})

获取列表的方法是 findAll,而不是 findall。在这个HTML片段中没有“ultimate”,它们是“utlimate”或“utimate”。这些是拼写错误吗?

撰写回答