You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

BeautifulSoup网页爬取问题:请求返回200但HTML结果为None

问题解决思路

先揪出你代码里的几个核心问题:

  • 完全错误的元素查找逻辑:soup.findAll("html")纯纯无效操作,<html>是整个页面的根标签,找这个根本拿不到你要的IP查询结果。你要的是查询后的表格内容,应该定位<tbody>里的行或单元格,比如改成soup.find("tbody").find_all("tr")来获取表格数据行。
  • 解析器不匹配:你导入了html5lib却用html.parser解析,有些网站的HTML结构不规范,html.parser会解析出错,直接换成html5lib试试:
    soup = BeautifulSoup(response.text, "html5lib")
    
  • POST参数可能不对:打开浏览器F12抓包,确认网站表单的真实参数名是不是ip——有些网站会给表单字段加隐藏前缀或重命名,参数填错的话,哪怕返回200,页面也不会显示查询结果。
  • 函数逻辑混乱:compare()里找到<tbody>就返回<html>标签列表,这逻辑完全跑偏,改成返回目标表格内容才对:
    def compare():
        tbody = soup.find("tbody")
        if tbody:
            return tbody.find_all("td")  # 返回表格所有单元格内容
        else:
            print("没找到结果,要么参数错了要么页面结构变了")
    

另外,先打印response.text看看返回的页面到底是什么——有时候返回200但实际是空白页、反爬提示页,这种情况下BeautifulSoup自然找不到目标元素。

内容的提问来源于stack exchange,提问作者Blackax

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 21:10:37