Python bs4 如何从 find_all() 中找到内联样式
Python bs4 how to find inline style from find_all()
我正在尝试使用 python 和 BeautifulSoup 获取内联样式元素的高度值 我设法用特定的 class 获取所有 div 但不能弄清楚如何获取内联样式=下面输出的高度值是我目前的代码。
import requests
from bs4 import BeautifulSoup
URL = "https://exampleonly.org/"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
samples = soup.find_all("div", {"class": "example"})
for sample in samples:
print(sample)
我的输出如下
<div class="example" style="height: 50%;"></div>
<div class="example" style="height: 20%;"></div>
<div class="example" style="height: 40%;"></div>
现在我想要得到的是 50%、20% 和 40% 的值。
您可以将 class 和属性选择器组合到目标元素,然后提取样式属性。使用 re 提取所需的值:
from bs4 import BeautifulSoup as bs
import re
html = '''
<div class="example" style="height: 50%;"></div>
<div class="example" style="height: 20%;"></div>
<div class="example" style="height: 40%;"></div>
'''
soup = bs(html, 'lxml')
for i in soup.select('.example[style*=height]'):
print(re.search(r'(\d+%)', i['style']).group(1))
from bs4 import BeautifulSoup
html = '''<div class="example" style="height: 50%;"></div>
<div class="example" style="height: 20%;"></div>
<div class="example" style="height: 40%;"></div>'''
soup = BeautifulSoup(html, 'lxml')
goal = [x['style'].split()[1][:-1] for x in soup.select('.example')]
print(goal)
输出:
['50%', '20%', '40%']
我正在尝试使用 python 和 BeautifulSoup 获取内联样式元素的高度值 我设法用特定的 class 获取所有 div 但不能弄清楚如何获取内联样式=下面输出的高度值是我目前的代码。
import requests
from bs4 import BeautifulSoup
URL = "https://exampleonly.org/"
page = requests.get(URL)
soup = BeautifulSoup(page.content, "html.parser")
samples = soup.find_all("div", {"class": "example"})
for sample in samples:
print(sample)
我的输出如下
<div class="example" style="height: 50%;"></div>
<div class="example" style="height: 20%;"></div>
<div class="example" style="height: 40%;"></div>
现在我想要得到的是 50%、20% 和 40% 的值。
您可以将 class 和属性选择器组合到目标元素,然后提取样式属性。使用 re 提取所需的值:
from bs4 import BeautifulSoup as bs
import re
html = '''
<div class="example" style="height: 50%;"></div>
<div class="example" style="height: 20%;"></div>
<div class="example" style="height: 40%;"></div>
'''
soup = bs(html, 'lxml')
for i in soup.select('.example[style*=height]'):
print(re.search(r'(\d+%)', i['style']).group(1))
from bs4 import BeautifulSoup
html = '''<div class="example" style="height: 50%;"></div>
<div class="example" style="height: 20%;"></div>
<div class="example" style="height: 40%;"></div>'''
soup = BeautifulSoup(html, 'lxml')
goal = [x['style'].split()[1][:-1] for x in soup.select('.example')]
print(goal)
输出:
['50%', '20%', '40%']