python - Beautiful Soup当标签同级时候要怎么取值?

 9158Zsc 发布于 2022-10-29 20:05

遇到一个平级标签的页面,如下显示:




    
    Title



    

1. 测试标题一

测试一小标题1

测试一小标题2

测试一小标题3

2. 测试标题二

测试二小标题1

测试二小标题2

测试二小标题3

3. 测试标题三

测试三小标题1

测试三小标题2

测试三小标题3

测试三小标题4

4. 测试标题四

测试四小标题1

测试四小标题2

我最终要取得的值是

  1. 测试标题一

    测试一小标题1,小标题1的链接
    测试一小标题2,小标题2的链接

    ...

  2. 测试标题四

    测试四小标题1,小标题1的链接
    测试四小标题2,小标题1的链接
    

    我原本使用的是

h2_a = soup.find_all('h2')
for i_a in h2_a:
    print i_a

这样是可以把需要的h2取到,但想要在继续循环去那些小标题时候,由于得到type(i_a)为
就不知道要怎么取了。

问大神给指点一下。

3 个回答
  • soup.find_all('h2', class_=None)
    这样就可以直接查找到你需要的了。

    2022-11-12 01:48 回答
  • I can't spell Chinese for the bad OS.

    I thinke that we can solve this question using re.

    import re
    resList = b = re.findall(r'<h2>(.*?)</h2>([\w\W]*?)(?=((<h2>)|(</body>)))',html.replace('\n',''))

    then: suppose a in resList, a[0] is the parent title, and a[1] is the sub content.
    try it.

    2022-11-12 01:48 回答
  • h2_a = soup.find_all('h2')
    for i_a in h2_a:
        if i_a.a:
            print (i_a.text,',',i_a.a['href'])
        else:
            print (i_a.text)

    python3下的。python2的print不知道怎么写了,不知是否符合你的要求

    2022-11-12 01:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有