python - 如何使用 Beautiful Soup 提取具有某些类属性的列表项?

标签 python html list beautifulsoup

如何使用 Beautiful Soup 提取具有某些类属性或不具有某些类属性的列表项?

例如,从下面的 HTML 中,我只想提取具有类属性“lev1”的列表项(即子项)。我还想提取没有类属性的列表项(即 parent ),但我想分别执行这两件事(这意味着我只想提取具有类属性“lev1”的列表项"然后只取出没有 class 属性的列表项。

<h3>HeaderName1<h3>
<ul class="prodoplist">
 <li>Parent</li>
 <li class="lev1">Child1</li>
 <li class="lev1">Child2</li>
 <li class="lev1">Child3</li>
  </ul>
  <h3>HeaderName2<h3>
   <ul class="prodoplist">
   <li>Parent2</li>
   <li class="lev1">Child1</li>
   <li class="lev1">Child2</li>
   <li class="lev1">Child3</li>
   </ul>

我的最终目标是制作这样的东西。

[[HeaderName1,Parent1,Child1],[HeaderName1,Parent1,Child2],[HeaderName1,Parent1,Child3],   [HeaderName2,Parent2,Child1],[HeaderName2,Parent2,Child2],[HeaderName2,Parent2,Child3]]

到目前为止我所拥有的是:

soup.h3.findNext('ul').contents

这样就可以得到这个:

 <li>Parent</li>
 <li class="lev1">Child1</li>
 <li class="lev1">Child2</li>
 <li class="lev1">Child3</li>
 <li>Parent2</li>
 <li class="lev1">Child1</li>
<li class="lev1">Child2</li>
<li class="lev1">Child3</li>

然后我应用这个,但是当我想单独拉动它们时,它给了我子级和父级

[x.text for x in duns_brands_html]

最佳答案

for h3 in soup.find_all('h3'):
    ul = h3.find_next_sibling('ul')
    lis = ul.findChildren('li')
    for i in range(3):
        print [h3.text, 
               lis[0].text, 
               lis[i].text]

输出:

[u'HeaderName1', u'Parent', u'Parent']
[u'HeaderName1', u'Parent', u'Child1']
[u'HeaderName1', u'Parent', u'Child2']
[u'HeaderName2', u'Parent2', u'Parent2']
[u'HeaderName2', u'Parent2', u'Child4']
[u'HeaderName2', u'Parent2', u'Child5']

关于python - 如何使用 Beautiful Soup 提取具有某些类属性的列表项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21421370/

相关文章:

javascript - 我的页面上的数据表未显示导出按钮 - JS 数据表

python 列表/序列格式

python - 字符串列表中的替换函数

Python 为包含 ("' { "和 : characters 的变量赋值

python - canvas.move(id, x, y) 不适用于箭头键

php - 获取伪元素中的特色图片(即 :before or :after) - WordPress

html - CSS 高度 :auto doesn't work with my wrapper div

r - 如何在整个 R Markdown 文档中自动编号项目?

python - Python连接MYSQL,获取SP500符号

python - 在 Python 中使用 Selenium 单击/选择单选按钮