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

Python使用BeautifulSoup爬虫遇CSS选择器报错及使用问题求助

报错解决

你当前触发语法错误的原因有两个:

  1. ID选择器格式错误:#和ID名col-body之间多了多余空格,CSS选择器中#必须紧跟ID名,空格会被识别为后代选择符,触发语法不合法的报错
  2. 混入HTML转义字符:选择器里的>是大于号>的HTML转义编码,需要替换为原生的>才符合CSS选择器语法

修正后的代码如下:

import requests
from bs4 import BeautifulSoup

html = requests.get('https://www.cryptocompare.com/coins/btc/influence/USDT').text
soup = BeautifulSoup(html, 'html.parser')
# 已修正选择器的空格和转义问题
total_commit = soup.select_one('#col-body > div > social-influence > div.row.row-zero.influence-others > div:nth-child(2) > div > div > div > div.col-md-3.td-col.brd-right > div > div.repo-tag > span > span > a').text
print(total_commit)

注意:该页面目标元素是JS动态渲染生成的,requests请求拿到的静态HTML中不存在对应节点,修正选择器后仍会返回None,后续需要改用支持JS渲染的工具(如Selenium、Playwright)或者直接抓后端接口获取数据

浏览器复制CSS选择器的正确使用方法

  • 基础清理:复制选择器后首先删除前后多余空格,把所有转义生成的>替换为>,检查#和ID名、.和类名之间是否有多余空格,确保符号和名称紧连
  • 优化选择器稳定性:浏览器默认复制的选择器通常会带大量层级依赖(如nth-child),页面结构稍有变动就会失效,建议手动精简为靠稳定ID、自定义属性、唯一类名定位的短选择器,减少层级嵌套
  • 分步验证:不要直接使用长选择器定位,可以逐层测试:先验证外层节点是否能被选中,再一步步向内层排查,方便区分是选择器语法错误还是目标元素不存在于静态HTML中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 21:06:02