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

为何BeautifulSoup选择器报错而Scrapy的response.css却正常工作?

问题原因与解决办法

报错原因

BeautifulSoup的select方法依赖soupsieve库解析CSS选择器,该库严格遵循CSS规范:ID选择器不能以未转义的数字开头。你的目标ID是30-11-2022,以数字开头,直接用div#30-11-2022会被判定为语法错误。

而Scrapy的CSS选择器实现做了兼容处理,允许这种不符合标准的写法,所以能正常运行。

解决办法

改用属性选择器定位元素,避开ID选择器的语法限制:

res = requests.get('https://sports.ndtv.com/fifa-world-cup-2022/schedules-fixtures')
soup = BeautifulSoup(res.text,'html.parser')
date_today = date.today()
d1 = date_today.strftime("%d-%m-%Y")
# 用属性选择器匹配id属性值
cont = soup.select(f'div[id="{d1}"]')

属性选择器div[id="30-11-2022"]直接匹配元素的id属性值,不受ID开头字符的限制,可正常定位到目标元素。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 07:05:19