XS147 2023-09-24 09:37 采纳率: 100%
浏览 6
已结题

关于#python,bs4库#的问题:soup.find_all返回了空列表

soup.find_all返回空列表
我的选择器是

#选择器
comicElems = soup.find_all('img')

这是部分html页面

<div class="main main-scroll_mode J_scroll_mode J_block" data-block="810100" data-blockname="阅读视图">
    <ul class="main-container">
        
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611yioH1MrtvZ2D6LpP.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611VAfrYl73yiemkdvW.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/16749086106lZHGxc612L3c2n0.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908610FKXNG5OEiqPo9NeA.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/167490860994dnW80_stZ8pi-z.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908609HSJ9BlnnEiz9trJb.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908608dnK2-1T5_FJme1TU.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908608N3psToVy_xqdDuGP.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908607z_7JMzahbDs5m0Ic.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/16749086076bsaHtURI1zTU-wG.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908606awNk3_sPuZhH7iPz.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908606BtSyyCYoBIou9rY6.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908605CsK4ohyHtKybpppr.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908605zP0qpB-zum0u_B0O.jpg"></li>
        
        
        <li class="main-item">
            <p class="next-subtit">即将进入下一话</p><a data-rseat="tnextchp" href="" class="next-title">没有了<i class="icon-next"></i></a>
        </li>
    </ul>
</div> <!-- 底部 -->

返回了空列表
但是相同网站的另一个页面(部分)
正常返回了所有带<img的元素列表:

<!-- 滚动模式 -->
<div class="main main-scroll_mode J_scroll_mode J_block" data-block="810100" data-blockname="阅读视图">
    <ul class="main-container">
        
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792866448182820ba2c97d5.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928676971828219c0a6175.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928689191828227de82b15.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928698861828235fc5f4b5.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179287006918282441a3be55.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792871285182825238187f5.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179287189918282655f5195.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792873062182827e73d1b4a.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792873480182828c91ae4ea.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928778191828292714b0ed.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179287504418282108f27a8d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928753411828211ead0442d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928768961828212ccae0dcd.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928858801828213ae8bd76d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179288233718282149069a10d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792880555182821572476aad.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179288292018282165425344d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179288447518282173602fe02.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792887402182821817e0c7a2.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792888146182821980f01b4d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792889580182822062cde4ed.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792891622182822144abae8d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179289470418282222689782d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792895469182822386741cd.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928962341828224ea450b6d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817929024801828225cc22d50d.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817928986371828226ae009ead.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/148179290059718282278fde6862.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/1481792899335182822871bc3202.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817929007211828229dacb85ad.jpg"></li>
        
        <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/10/18282/14817929019241828230bca94f4d.jpg"></li>
        
        
        <li class="main-item">
            <p class="next-subtit">即将进入下一话</p><a data-rseat="tnextchp" href="/chapter/199900-37126.html" class="next-title">第四话番外<i class="icon-next"></i></a>
        </li>
    </ul>
</div> <!-- 底部 -->

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-09-24 12:33
    关注

    【以下回答由 GPT 生成】

    问题分析: 通过观察HTML代码,我们可以看到img元素是位于li元素的内部,而li元素又是位于ul元素的内部。因此,我们需要通过嵌套选择器的方式来获取img元素。

    解决方案: 首先,确定选择器的层级关系,我们可以使用ul作为选择器的起点,然后选择li元素,再选择其中的img元素。

    具体步骤如下: 1. 导入所需模块:

    from bs4 import BeautifulSoup
    
    1. 获取HTML代码:
    html = '''
    <div class="main main-scroll_mode J_scroll_mode J_block" data-block="810100" data-blockname="阅读视图">
        <ul class="main-container">
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611yioH1MrtvZ2D6LpP.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611VAfrYl73yiemkdvW.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/16749086106lZHGxc612L3c2n0.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908610FKXNG5OEiqPo9NeA.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/167490860994dnW80_stZ8pi-z.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908609HSJ9BlnnEiz9trJb.jpg"></li>
    </div>
    '''
    
    1. 创建BeautifulSoup对象:
    soup = BeautifulSoup(html, 'html.parser')
    
    1. 使用嵌套选择器查找img元素:
    ulElem = soup.find('ul', class_='main-container')
    liElems = ulElem.find_all('li', class_='main-item')
    comicElems = [liElem.find('img') for liElem in liElems]
    
    1. 遍历输出获取到的img元素的src属性值:
    for comicElem in comicElems:
        print(comicElem['src'])
    

    预期输出:

    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611yioH1MrtvZ2D6LpP.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611VAfrYl73yiemkdvW.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/16749086106lZHGxc612L3c2n0.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908610FKXNG5OEiqPo9NeA.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/167490860994dnW80_stZ8pi-z.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908609HSJ9BlnnEiz9trJb.jpg
    

    解决方案演示:

    from bs4 import BeautifulSoup
    
    html = '''
    <div class="main main-scroll_mode J_scroll_mode J_block" data-block="810100" data-blockname="阅读视图">
        <ul class="main-container">
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611yioH1MrtvZ2D6LpP.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611VAfrYl73yiemkdvW.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/16749086106lZHGxc612L3c2n0.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908610FKXNG5OEiqPo9NeA.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/167490860994dnW80_stZ8pi-z.jpg"></li>
    
            <li class="main-item"><img src="https://res.xiaoqinre.com/images/comic/1014/2027038/1674908609HSJ9BlnnEiz9trJb.jpg"></li>
    </div>
    '''
    
    soup = BeautifulSoup(html, 'html.parser')
    ulElem = soup.find('ul', class_='main-container')
    liElems = ulElem.find_all('li', class_='main-item')
    comicElems = [liElem.find('img') for liElem in liElems]
    
    for comicElem in comicElems:
        print(comicElem['src'])
    

    输出结果:

    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611yioH1MrtvZ2D6LpP.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908611VAfrYl73yiemkdvW.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/16749086106lZHGxc612L3c2n0.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908610FKXNG5OEiqPo9NeA.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/167490860994dnW80_stZ8pi-z.jpg
    https://res.xiaoqinre.com/images/comic/1014/2027038/1674908609HSJ9BlnnEiz9trJb.jpg
    


    【相关推荐】



    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 10月2日
  • 已采纳回答 9月24日
  • 创建了问题 9月24日

悬赏问题

  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。
  • ¥15 请问用arcgis处理一些数据和图形,通常里面有一个根据点划泰森多边形的命令,直接划的弊端是只能执行一个完整的边界,但是我们有时候会用到需要在有很多边界内利用点来执行划泰森多边形的命令
  • ¥30 在wave2foam中执行setWaveField时遇到了如下的浮点异常问题,请问该如何解决呢?
  • ¥20 看图片)删除这个自动化录屏脚本就一直报错找不到脚本文件,如何解决?(相关搜索:bat文件)
  • ¥750 关于一道数论方面的问题,求解答!(关键词-数学方法)
  • ¥200 csgo2的viewmatrix值是否还有别的获取方式
  • ¥15 Stable Diffusion,用Ebsynth utility在视频选帧图重绘,第一步报错,蒙版和帧图没法生成,怎么处理啊
  • ¥15 请把下列每一行代码完整地读懂并注释出来
  • ¥15 pycharm运行main文件,显示没有conda环境
  • ¥15 寻找公式识别开发,自动识别整页文档、图像公式的软件