python - Beautiful Soup当标签同级时候要怎么取值?
巴扎黑
巴扎黑 2017-04-17 17:31:51
[Python讨论组]

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




    
    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)
PHP中文网
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不知道怎么写了,不知是否符合你的要求

PHP中文网

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.

阿神

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号