如何用Beautiful Soup获取含x-y-z属性的div标签内容?
解决方法
你遇到的x-y-z是HTML自定义属性,不是class,所以不能用class_参数来匹配。可以用以下两种方法获取目标div:
方法1:使用attrs参数匹配属性存在的元素
直接通过attrs指定要匹配的属性,因为这个属性没有赋值,我们可以用True来匹配存在该属性的div:
from bs4 import BeautifulSoup # 假设你的HTML内容存在html_doc变量中 soup = BeautifulSoup(html_doc, 'html.parser') # 匹配带有x-y-z属性的div target_div = soup.find("div", attrs={"x-y-z": True}) # 获取div内部的HTML代码 inner_html = target_div.decode_contents() print(inner_html)
方法2:使用CSS选择器
CSS选择器里[属性名]可以匹配带有指定属性的元素,用select_one获取单个匹配元素:
from bs4 import BeautifulSoup soup = BeautifulSoup(html_doc, 'html.parser') target_div = soup.select_one('div[x-y-z]') inner_html = target_div.decode_contents() print(inner_html)
补充说明
- 如果
x-y-z属性有具体值(比如<div x-y-z="some-value">),可以把True换成对应的值,或者在CSS选择器里写成div[x-y-z="some-value"]来精准匹配。 decode_contents()会返回div内部的HTML字符串(不包含div标签本身),如果需要包含div标签的完整HTML,直接用str(target_div)即可。
内容的提问来源于stack exchange,提问作者micastik
相关产品推荐
相关产品推荐

