Python selenium -获取p和span的值



假设我有这样一个代码:

<div class="div1">
<div class="div2">
<div class="div3">X:  <span class="SpanX">ValueX</span></div>
<p class="p_class">A: <span class="SpanA"> ValueA </span> </p>
<p class="p_class_2">B: <span class="SpanB">ValueB</span></p>
<p class="p_class">C: <span class="SpanA">ValueC</span></p>
</div>
</div>      

我想买一本像{X:ValueX, A:ValueA, B:ValueB, C:ValueC}这样的字典

我试着得到driver.find_elements_by_xpath('//div[@class = "div1"),但下一步呢?

如何在结构中更深入?如何检索嵌套在p中的span值?

在XML代码中,我看到第一个文本对在<div class="div3">内,而所有其他文本对都在<p>元素内。所以这里的共同点是所有这些元素都是<div class="div2">元素的直接子元素。
现在您可以获得直接子元素和内部span元素的文本值。
您可以获取"key"Values,一个"值"列表。值,然后将它们压缩到字典中,如下所示:

keys = []
values = []
elements = driver.find_elements_by_xpath("//div[@class='div2']/*")
for element in elements:
entire_text = element.text
key = entire_text.split(" ")[0]
keys.append(key)
elements = driver.find_elements_by_xpath("//div[@class='div2']/*/span")
for element in elements:
value = element.text
values.append(value)
dictionary = dict(zip(keys, values))
print(dictionary) #{X:ValueX, A:ValueA, B:ValueB, C:ValueC}

复制要检索的每个值的xpath。您将在这里找到一个模式,并且可以使用一个简单的循环来迭代这些元素。

例如,标签内元素的xpath可能如下所示:

- /html/body/div/div/p[1]/span
- /html/body/div/div/p[2]/span
- /html/body/div/div/p[3]/span
遵循此模式,您可以使用以下循环来提取所需的值:

for index in range(1,4):
# concatenating the index values to iterate through the elements
xpath_string = "/html/body/div/div/p[" + str(index) + "]/span"

# catching that particular element using xpath
element = driver.find_element_by_xpath(xpath_string)

用美汤!它允许你搜索特定的标签/id/类,然后提取文本/链接等。

文档如下:https://beautiful -汤- 4. - readthedocs.io/en/latest/

最新更新