gpt4 book ai didi

python - 使用 BeautifulSoup 查找具有两种特定样式的标签

转载 作者:太空宇宙 更新时间:2023-11-04 14:13:24 25 4
gpt4 key购买 nike

我正在尝试使用 Python2.7 中的 BeautifulSoup (bs4) 包在 html 文档中查找以下标记:

<div style="position:absolute; border: textbox 1px solid; writing-mode:lr-tb; left:408px; top:540px; width:14px; height:9px;"><span style="font-family: OEULZL+ArialMT; font-size:9px">0.00<br></span></div>

在 html 文档中有多个其他标签几乎完全相同 - 唯一一致的区别是“left:408px”和“height:9px”属性。

如何使用 BeautifulSoup 找到这个标签?

我尝试了以下方法:

from bs4 import BeautifulSoup as bs

soup = bs("<div style="position:absolute; border: textbox 1px solid; writing-mode:lr-tb; left:408px; top:540px; width:14px; height:9px;"><span style="font-family: OEULZL+ArialMT; font-size:9px">0.00<br></span></div>", 'html.parser')

soup.find_all('div', style=('left:408px' and 'height:9px'))
soup.find_all('div', style=('left:408px') and style=('height:9px')) #doesn't like style being used twice
soup.find_all('div', {'left':'408px' and 'height':'9px'})
soup.find_all('div', {'left:408px'} and {'height:9px'})
soup.find_all('div', style={'left':'408px' and 'height':'9px'})
soup.find_all('div', style={'left:408px'} and {'height:9px'})

有什么想法吗?

最佳答案

你可以检查 style 里面有 left:408pxheight:9px:

soup.find('div', style=lambda value: value and 'left:408px' in value and 'height:9px' in value)

或者:

import re
soup.find('div', style=re.compile(r'left:408px.*?height:9px'))

或者:

soup.select_one('div[style*="408px"]')

请注意,一般来说,样式属性用于定位元素并不可靠。查看是否还有其他内容 - 检查父元素、同级元素,或者元素附近是否有相应的标签。

请注意,更合适的 CSS 选择器是 div[style*="left:408px"][style*="height:9px"],但由于 limited CSS selector supportthis bug , 它不会按原样工作。

关于python - 使用 BeautifulSoup 查找具有两种特定样式的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35140158/

25 4 0