使用Python Requests获取HTML返回空白及CSS选择器使用疑问
解决Python网页爬取股价的问题
首先明确:你纠结的CSS选择器和CSS路径本质是一回事——浏览器生成的「CSS路径」就是完整层级的CSS选择器,核心问题不是选哪个,而是得先解决当前的几个关键障碍:
requests返回空白但本地保存有内容
这是典型的动态渲染问题:很多网站用JavaScript加载股价这类数据,requests只能获取服务器返回的初始HTML,动态内容是浏览器执行JS后才生成的。你手动保存的txt是浏览器渲染后的完整页面,和requests拿到的初始内容不一样。解决办法是用selenium或playwright这类能模拟浏览器的工具,它们会执行页面JS,获取渲染后的完整HTML。CSS选择器返回[]
要么是你用的选择器对应的元素在requests拿到的初始HTML里根本不存在(因为是动态生成的),要么是选择器本身有问题。比如浏览器复制的完整CSS路径常包含动态生成的类名、ID(比如随机字符串),刷新页面就会变化,自然选不到元素。建议放弃复制的长路径,找元素的稳定特征:比如带固定属性的标签(如span[data-stock="AAPL"])、固定类名(如.stock-price),写简洁的选择器,比层级路径更可靠。谷歌搜索页无法获取股价
谷歌搜索结果不仅是动态渲染,反爬机制也很严格,requests直接请求大概率拿不到正确内容,甚至会被限制访问。如果要从谷歌获取,同样需要用模拟浏览器的工具,同时注意设置合理的请求头、控制访问频率。
实操小步骤
- 打开浏览器开发者工具(F12),切换到「网络」标签,刷新目标页面,查看HTML请求的响应内容,确认股价是静态存在还是动态生成的。
- 找到股价对应的HTML标签,提取它的稳定属性/类名,编写简洁的CSS选择器测试。
- 若为动态渲染,改用
selenium加载页面后再用选择器定位元素。
内容的提问来源于stack exchange,提问作者vee2gee
相关产品推荐
相关产品推荐

