python - 使用BeautifulSoup的find和find_all函数获取标签的问题
巴扎黑
巴扎黑 2017-04-18 09:47:21
[Python讨论组]

在爬虫时遇到下面的导航树:

——p.center
    ——p.ft_ggbox_1 balck_ggbox_1
        ——p.black_jubao_right black_jubao_right_xxbh black_jubaot_xxbh
            ——form#listform
                ——p
                ——a
                    ——p.ft_publick_pzxx
                        ——p.ft_publick_pzxxright ft_publick_myjb
                ——p
                ——a

如果使用find函数,只能找到第一个a标签,下面的a都无法找到,但是如果用find_all函数,又会把a的child全提取,但实际上我只想提取所有a的href而已,这个问题我该怎么解决呢?

巴扎黑
巴扎黑

全部回复(3)
PHP中文网

提问问题的姿势不对,这样子别人很难为你解答,应该给出网页的完整结构。

from bs4 import BeautifulSoup

url = 'https://segmentfault.com/'
html = requests.get(url).content

soup = BeautifulSoup(html, 'lxml')
for hrefs in soup.find_all('a'):
    print(hrefs.get('href'))
    


这样子不就可以了

巴扎黑

导航树是自动生成的吗?

PHP中文网

首先通过find_all找到所有a标签, 然后通过列表表达式将所有a包含的href保存到列表中

soup = BeautifulSoup(html_string)
atag = soup.find_all('a')
hrefs = [item.get('href') for item in atags if item.get('href')]
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

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