使用BeautifulSoup提取div标签data-pid-imprintid属性值的方法咨询
BeautifulSoup提取data-pid-imprintid属性解决方案
错误原因说明
你原有代码的问题如下:
find_all('div', 'data-pid-imprintid')写法不符合API规则,find_all()的第二个参数默认用于匹配class属性,无法用来筛选自定义属性是否存在- 匹配到目标div后不需要额外调用
find('div')嵌套查找,data-pid-imprintid属性直接挂载在当前匹配到的div元素上
正确实现代码
from bs4 import BeautifulSoup # html_text为你获取到的页面源码内容 soup = BeautifulSoup(html_text, 'lxml') # 筛选所有带有data-pid-imprintid属性的div元素 divs = soup.find_all('div', attrs={"data-pid-imprintid": True}) for div in divs: imprint_id = div.get('data-pid-imprintid') print(imprint_id)
可选简化写法(CSS选择器)
你也可以用CSS选择器语法实现更简洁的筛选,逻辑更直观:
from bs4 import BeautifulSoup soup = BeautifulSoup(html_text, 'lxml') for div in soup.select('div[data-pid-imprintid]'): print(div.get('data-pid-imprintid'))
内容的提问来源于stack exchange,提问作者Mads Egelund Hoff
相关产品推荐
相关产品推荐

