Python selenium - 从 p 和 span 获取值
Python selenium - get values from p and 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 中的跨度值?
使用beautifulsoup!它允许您搜索特定的 tags/ids/classes 然后提取 text/links 等
复制您要检索的每个值的 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)
在 XML 您的代码中,我看到第一个文本对在 <div class="div3">
内,而所有其他文本对都在 <p>
元素内。所以这里的共同点是所有这些元素都是 <div class="div2">
元素的直接子元素。
现在您可以获得直接子元素和内部 span
元素的文本值。
您可以获得“键”值列表、“值”值列表,然后将它们压缩到字典中,如下所示:
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}
假设我有这样的代码:
<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 中的跨度值?
使用beautifulsoup!它允许您搜索特定的 tags/ids/classes 然后提取 text/links 等
复制您要检索的每个值的 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)
在 XML 您的代码中,我看到第一个文本对在 <div class="div3">
内,而所有其他文本对都在 <p>
元素内。所以这里的共同点是所有这些元素都是 <div class="div2">
元素的直接子元素。
现在您可以获得直接子元素和内部 span
元素的文本值。
您可以获得“键”值列表、“值”值列表,然后将它们压缩到字典中,如下所示:
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}