如何在Python中使用BeatufilSoup获取<li>内容

时间:2019-06-01 20:57:32

标签: python beautifulsoup html-lists

我需要使用BeatifulSoup从HTML文件中的div类中的li标签中获取所有内容。

以下是我需要从HTML文件获取哪些值的示例:

<div class="renderedOptions dropdown-menu">
   <div>
      <ul class="text-option-list">
         <li>40</li>
         <li>41</li>
         <li>42</li>
         <li>42 ½</li>
         <li>43</li>
         <li>44</li>
         <li>45</li>
      </ul>
   </div>

很明显,HTML文件中有很多li标记,因此我只想从指定的div类中获取li标记的内容。我当时在想像这样的东西,但是没用。

from bs4 import BeautifulSoup as bs
xml = bs(product.text, features='lxml')
size = xml.find_all('div', {'class': 'renderedOptions'})

仅打印[]

这似乎有什么问题?

1 个答案:

答案 0 :(得分:0)

如果您的文档格式不正确,

lxml可能无法正常工作,我建议将html.parser用于大多数用途:

from bs4 import BeautifulSoup

data = """
<html>
<div class="renderedOptions dropdown-menu">
   <div>
      <ul class="text-option-list">
         <li>40</li>
         <li>41</li>
         <li>42</li>
         <li>42 ½</li>
         <li>43</li>
         <li>44</li>
         <li>45</li>
      </ul>
   </div>
</div>
</html>
"""

soup = BeautifulSoup(data, 'html.parser')
find = soup.findAll('div', {"class": "renderedOptions dropdown-menu"})
for i in find:
    print(i)

这应该打印所需的输出