如何使用Beautiful Soup抓取指定class的ul标签内的票房数据
错误代码问题梳理
以下是提交的代码存在的共性问题:
movie-info-item-value是HTML元素data-qa属性的取值,既不是标签名也不是类名,不能直接作为查找参数传入- BeautifulSoup的
get()方法用于提取当前标签的属性值,不能用于查找子元素 - CSS选择器匹配自定义属性需要使用
[属性名="属性值"]的语法格式
可行实现方案
写法1:属性匹配+相邻节点查找(通用稳妥,不依赖具体票房数值)
# 先定位票房对应的标签说明 box_office_label = soup.find("div", {"data-qa": "movie-info-item-label"}, string="Box Office (Gross USA):") # 查找说明标签后相邻的数值节点,提取文本并去除首尾空白 box_office_value = box_office_label.find_next_sibling("div", {"data-qa": "movie-info-item-value"}).text.strip() print(box_office_value) # 输出结果:$64.3M
写法2:CSS选择器直接定位
# 直接匹配所有data-qa属性为movie-info-item-value的div,取第一个节点(就是票房对应的元素) box_office_value = soup.select_one('div[data-qa="movie-info-item-value"]').text.strip() print(box_office_value)
内容的提问来源于stack exchange,提问作者B Perera
相关产品推荐
相关产品推荐

