Python爬虫返回空列表,soup.select选择器是否存在问题?
爬虫选择器返回空列表的排查方向
检查选择器语法:代码里的
>是HTML转义字符,Python代码中需替换为正常的>,否则CSS选择器语法错误,无法匹配任何元素。把soup.select('.container > .****** > .img')改成soup.select('.container > .****** > .img')再测试。核实页面实际结构:
- 打开目标页面开发者工具(F12),查看元素层级,确认是否存在
.container的直接子元素是你打码的类名,且该元素的直接子元素是.img。如果中间有嵌套元素,把直接子元素选择器>换成后代选择器(空格),比如.container .****** .img。 - 确认
.img元素的src属性是否存在,有些图片可能用data-src等自定义属性存储地址,需对应调整取值逻辑。
- 打开目标页面开发者工具(F12),查看元素层级,确认是否存在
排查动态加载问题:如果页面通过JavaScript渲染图片,
requests只能获取静态HTML,此时需使用Selenium、Playwright等工具模拟浏览器加载完整页面后再解析。添加请求头规避反爬:部分网站会验证请求头,缺少User-Agent等信息会返回异常页面。给请求添加headers:
headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36' } resp = requests.get('https://******/************.html', headers=headers)验证返回的HTML内容:在代码中添加
print(resp.text),查看实际获取的页面是否和浏览器中一致,确认是否被反爬拦截(比如返回403、空白页或验证码页面)。检查class名称正确性:确认你打码的
.******类名是否完全匹配页面中的实际类名,注意大小写、连字符、多类名的情况(比如元素有多个class时,选择器要写成.class1.class2而非.class1 class2)。
内容的提问来源于stack exchange,提问作者Nguyen Huu Phuc
相关产品推荐
相关产品推荐

