Beautiful Soup - 获取所有元素
Beautiful Soup - Get all elements
Beautiful Soup 新手不胜感激。
我正在处理一个包含很多内容的页面:
<p data-v-04dd08f2> .. </p>
个元素。 p 里面是一个字符串值,我需要它和一个嵌入的跨度。
问题可能非常简单...我正在尝试使用 find_all 到 'get' 所有这些元素的列表,我随后会解析这些元素以从内部获取我需要的标记。
有人可以让我摆脱痛苦并告诉我 find_all 应该如何构造才能得到这些吗?
我试过:
find_all('p',{'data':'v-04dd08f2'} } # nope
find_all('p', {"attributes': 'v-04dd08f2'} ) # nope
还有很多其他组合都无济于事。
谢谢!
如果您愿意使用 CSS 选择器,我个人更喜欢 BeautifulSoup 的 find_* 方法,并且段落标签实际上正是您所指出的,那么“数据- v-04dd08f2" 是标签的一个属性,那么下面应该可以解决问题
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p data-v-04dd08f2> .. </p>')
p_tags = soup.select('p[data-v-04dd08f2]')
print(p_tags)
#[<p data-v-04dd08f2=""> .. </p>]
bs4 使用 SoupSieve 来实现 CSS 选择器。基于属性选择的 SoupSieve 文档是 here。请注意,根据您的尝试,我怀疑您实际上可能正在寻找具有数据属性 = 'v-04dd08f2' 的 p 标签。如果是这种情况,soup.select
字符串应该是 soup.select('p[data=v-04dd08f2]')
这将 return 所有属性名称以 "data-v-"
开头的元素
match_pattern = 'data-v-'
m = soup.findAll(lambda tag: any(attr.startswith(match_pattern) for attr in tag.attrs.keys()))
element.attrs
是key-value结构,{attribute_name:attribute_value}
Beautiful Soup 新手不胜感激。
我正在处理一个包含很多内容的页面:
<p data-v-04dd08f2> .. </p>
个元素。 p 里面是一个字符串值,我需要它和一个嵌入的跨度。
问题可能非常简单...我正在尝试使用 find_all 到 'get' 所有这些元素的列表,我随后会解析这些元素以从内部获取我需要的标记。
有人可以让我摆脱痛苦并告诉我 find_all 应该如何构造才能得到这些吗?
我试过:
find_all('p',{'data':'v-04dd08f2'} } # nope
find_all('p', {"attributes': 'v-04dd08f2'} ) # nope
还有很多其他组合都无济于事。
谢谢!
如果您愿意使用 CSS 选择器,我个人更喜欢 BeautifulSoup 的 find_* 方法,并且段落标签实际上正是您所指出的,那么“数据- v-04dd08f2" 是标签的一个属性,那么下面应该可以解决问题
from bs4 import BeautifulSoup
soup = BeautifulSoup('<p data-v-04dd08f2> .. </p>')
p_tags = soup.select('p[data-v-04dd08f2]')
print(p_tags)
#[<p data-v-04dd08f2=""> .. </p>]
bs4 使用 SoupSieve 来实现 CSS 选择器。基于属性选择的 SoupSieve 文档是 here。请注意,根据您的尝试,我怀疑您实际上可能正在寻找具有数据属性 = 'v-04dd08f2' 的 p 标签。如果是这种情况,soup.select
字符串应该是 soup.select('p[data=v-04dd08f2]')
这将 return 所有属性名称以 "data-v-"
开头的元素match_pattern = 'data-v-'
m = soup.findAll(lambda tag: any(attr.startswith(match_pattern) for attr in tag.attrs.keys()))
element.attrs
是key-value结构,{attribute_name:attribute_value}