2302_78950302 2024-02-01 19:24 采纳率: 0%
浏览 36

Python爬虫遇到的抓取html不全咋回事

img

img


为什么我爬取不到div class="Media Label SWsj Media hasVideoButton 16k20"…
div class="position-absolute w-100 h-100"这两行的内容而是只有img src的内容

  • 写回答

2条回答 默认 最新

  • 叫兽-郭老师 新星创作者: Java技术领域 2024-02-01 19:27
    关注

    参考通义千问和郭老师的小迷弟雅思莫了-编写提供,主要是为了帮助您快速解决问题,如下回答,您可以参考下,如有问题,评论区留言。

    在使用Python爬虫抓取网页内容时,如果发现HTML结构中的某些div标签或者其内的内容没有被正确获取,可能的原因有以下几点:

    1. 动态加载内容:现代网页中,特别是复杂的网站或应用程序,经常采用异步加载的方式来显示数据。这意味着部分HTML结构(如你提到的带有特定class属性的div)可能并不是随着原始HTML文档一起加载的,而是通过JavaScript执行后动态生成或从服务器端异步请求得到的。如果你的爬虫仅处理原始HTML响应,那么这部分内容将不会被捕获到。

      解决方案:对于这种情况,需要分析网页加载逻辑,识别出异步请求的数据源,或者使用如Selenium、Splash等工具模拟浏览器行为来渲染完整页面后再进行抓取。

    2. 分页、滚动加载:一些网页会随着用户滚动页面或点击分页按钮时逐步加载内容。同样,爬虫如果不模拟这种交互,就无法看到这些隐藏或延迟加载的内容。

    3. CSS选择器问题:检查你的CSS选择器是否准确匹配了目标div元素。例如,如果你使用的类名组合有误或类名本身是根据不同的条件动态添加或删除的,那么基于静态类名的选择器可能就无法找到对应的元素。

    4. 内容被禁用或隐藏:有时网页开发者可能会通过CSS样式(如"display:none")将内容隐藏,或者在前端对内容进行了过滤,这也会导致内容看似不存在于原始HTML中。

    5. 网络问题或反爬策略:网络连接不稳定可能导致HTML文件不完整,另外,网站可能部署了反爬虫策略,如IP限制、User-Agent检查、验证码、Session验证等,使得爬虫无法正常获取完整的页面内容。

    要解决这个问题,请首先检查并确认目标内容是否确实是动态加载的。如果是,则尝试找出API接口或其他方式获取该数据;如果不是,则检查你的爬虫代码和选择器的准确性,并确保网络请求成功获取到了完整的HTML响应。

    评论

报告相同问题?

问题事件

  • 创建了问题 2月1日