如何提取嵌套在特定 <div> 中的 <i> 的所有属性值
How to extract all attribute values of <i> nested in a specific <div>
我正在抓取一个网站,在该网站上我有一个具有不同价值的重复项。
一个 div 项目的例子是这样的:
<div class="lang">
<i class="flag fr" qtip-tooltip="Français"></i>
<i class="flag nl" qtip-tooltip="Néerlandais"></i>
<i class="flag gb" qtip-tooltip="Anglais"></i>
<i class="flag it" qtip-tooltip="Italien"></i>
</div>
我想获取字符串中所有 gtip-tooltip 值的 list
或每个 div 的列表。我该怎么做?
我试过了
langs = driver.find_elements(by=By.XPATH,value='//div[@class="lang"]')
但我得到空字符串值。
尝试:
elements = driver.find_elements_by_css_selector('div.lang')
然后您可以通过循环访问您的变量来访问您的元素:
For element in elements :
print(element)
您已经非常接近您的目标 - 要实现它,只需遍历 langs
的 ResultSet
,找到每个 <div>
的所有 <i>
元素并提取它们再次迭代时的属性:
langs = driver.find_elements(By.XPATH,'//div[@class="lang"]')
for lang in langs:
tooltips = [l.get_attribute('qtip-tooltip') for l in lang.find_elements(By.XPATH,'.//i')]
## as list
print(tooltips)
## as comma separated string
print(','.join(tooltips))
输出
['Français', 'Néerlandais', 'Anglais', 'Italien']
或
Français,Néerlandais,Anglais,Italien
要将所有 div
语言作为一种 list
或更好的一种 set
并具有独特的价值,您可以使用:
set(l.get_attribute('qtip-tooltip') for l in driver.find_elements(By.XPATH,'//div[@class="lang"]/i'))
输出
{'Anglais', 'Français', 'Italien', 'Néerlandais'}
我正在抓取一个网站,在该网站上我有一个具有不同价值的重复项。
一个 div 项目的例子是这样的:
<div class="lang">
<i class="flag fr" qtip-tooltip="Français"></i>
<i class="flag nl" qtip-tooltip="Néerlandais"></i>
<i class="flag gb" qtip-tooltip="Anglais"></i>
<i class="flag it" qtip-tooltip="Italien"></i>
</div>
我想获取字符串中所有 gtip-tooltip 值的 list
或每个 div 的列表。我该怎么做?
我试过了
langs = driver.find_elements(by=By.XPATH,value='//div[@class="lang"]')
但我得到空字符串值。
尝试:
elements = driver.find_elements_by_css_selector('div.lang')
然后您可以通过循环访问您的变量来访问您的元素:
For element in elements :
print(element)
您已经非常接近您的目标 - 要实现它,只需遍历 langs
的 ResultSet
,找到每个 <div>
的所有 <i>
元素并提取它们再次迭代时的属性:
langs = driver.find_elements(By.XPATH,'//div[@class="lang"]')
for lang in langs:
tooltips = [l.get_attribute('qtip-tooltip') for l in lang.find_elements(By.XPATH,'.//i')]
## as list
print(tooltips)
## as comma separated string
print(','.join(tooltips))
输出
['Français', 'Néerlandais', 'Anglais', 'Italien']
或
Français,Néerlandais,Anglais,Italien
要将所有 div
语言作为一种 list
或更好的一种 set
并具有独特的价值,您可以使用:
set(l.get_attribute('qtip-tooltip') for l in driver.find_elements(By.XPATH,'//div[@class="lang"]/i'))
输出
{'Anglais', 'Français', 'Italien', 'Néerlandais'}