为什么requests返回的HTML与浏览器dev tools不一致?BeautifulSoup爬取Houzz站点异常如何解决
你拿到的内容不属于异常内容,是使用CSS-in-JS方案的网站正常内嵌的样式代码,你在浏览器开发者工具中看到的是浏览器完成解析、过滤了样式/脚本标签之后的渲染态DOM,而BeautifulSoup默认拉取的是网站返回的原始HTML源码,会包含所有内嵌的<style>、<script>标签内容。
这个需求完全可以用BeautifulSoup实现,处理步骤如下:
- 首先发起请求时要配置符合浏览器特征的User-Agent请求头,避免被站点的反爬策略拦截返回错误内容
- 拿到原始HTML用BeautifulSoup解析后,先删除所有不需要的样式、脚本标签再做内容提取
参考代码示例:
from bs4 import BeautifulSoup import requests # 配置正常浏览器请求头 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/122.0.0.0 Safari/537.36" } target_url = "你的houzz页面地址" resp = requests.get(target_url, headers=headers) soup = BeautifulSoup(resp.text, "html.parser") # 移除所有style标签 for style in soup.find_all("style"): style.decompose() # 不需要脚本内容的话也可以移除所有script标签 for script in soup.find_all("script"): script.decompose() # 后续可直接在处理后的soup对象中提取你需要的业务内容 print(soup.prettify())
如果按上述方法处理后,还是拿不到你在开发者工具中看到的页面内容,说明该站点的目标内容是前端JavaScript动态渲染生成的,BeautifulSoup仅能解析静态HTML源码,这种场景可以搭配Selenium、Playwright等支持浏览器渲染的工具使用,拿到渲染完成后的页面源码再交给BeautifulSoup解析即可。
内容的提问来源于stack exchange,提问作者Devindi Siwurathna
相关产品推荐
相关产品推荐

