我需要先前选择的元素的同级。
例如:
<div class="dt">Technology</div>
<div class="da">GSM / CDMA / HSPA / EVDO / LTE</div>
<div class="dt">Dimensions</div>
<div class="da">149.9 x 70.4 x 7.8 mm (5.90 x 2.77 x 0.31 in)</div>
<div class="dt">Weight</div>
<div class="da">157 g (5.54 oz)</div>
<div class="dt">Build</div>
<div class="da">Back glass (Gorilla Glass 5), aluminum frame </div>
<div class="dt">Type</div>
<div class="da">Dynamic AMOLED capacitive touchscreen, 16M colors</div>
<div class="dt">SIM</div>
<div class="da">Single SIM (Nano-SIM) or Hybrid Dual SIM)</div>
假设我需要“尺寸”和“类型”。
代码:
dts = browser.find_elements_by_class_name("dt");
for dt in dts :
if dt.("innerText") == "Dimensions":
print(dt.("innerText") + "-" + dt.**FollowingSibling**())
if dt.("innerText") == "Type":
print(dt.("innerText") + "-" + dt.**FollowingSibling**())
预期输出:
Dimensions - 149.9 x 70.4 x 7.8 mm (5.90 x 2.77 x 0.31 in)
Type - Dynamic AMOLED capacitive touchscreen, 16M colors
答案 0 :(得分:1)
您可以根据需要使用text
属性或innerText
。请尝试以下代码。
for dt in dts :
if dt.text == "Dimensions":
print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
if dt.text == "Type":
print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
OR
dts = browser.find_elements_by_class_name("dt");
for dt in dts :
if dt.get_attribute("innerText")== "Dimensions":
print(dt.get_attribute("innerText") + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
if dt.get_attribute("innerText") == "Type":
print(dt.get_attribute("innerText") + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
输出:
Dimensions-149.9 x 70.4 x 7.8 mm (5.90 x 2.77 x 0.31 in)
Type-Dynamic AMOLED capacitive touchscreen, 16M colors
答案 1 :(得分:0)
尝试以下代码(通过xpath查找元素):
dts = browser.find_elements_by_class_name("dt");
for dt in dts :
if dt.("innerText") == "Dimensions":
print(dt.("innerText") + "-" + dt.xpath("//div[contains(.,'Dimensions')]/following-sibling::div").text)
if dt.("innerText") == "Type":
print(dt.("innerText") + "-" + dt.xpath("//div[contains(.,'Type')]/following-sibling::div").text)
答案 2 :(得分:0)
要查找元素的以下同级元素,可以使用CSS选择器或XPath。 使用XPath可以找到同级元素,而无需了解/匹配前一个元素的定位符。 但是,如果使用CSS选择器,则必须对元素的同级元素使用选择器。
Xpath
dts = browser.find_elements_by_class_name("dt");
for dt in dts :
if dt.text == "Dimensions":
print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
if dt.text == "Type":
print(dt.text + "-" + dt.find_element_by_xpath("./following-sibling::div").text)
CSS选择器
dts = browser.find_elements_by_class_name("dt")
das = browser.find_elements_by_css_selector(".dt + div")
for i in range(0, len(dts) :
if dt.index(i).text == "Dimensions":
print(dt.indext(i).text + "-" + da.index(i).text)
if dt.index(i).text == "Type":
print(dt.index(i).text + "-" + da.index(i)..text)
CSS选择器将仅找到带有dt类标签的div。它将在您给定的情况下起作用,因为所有dt类的div后面都是带有da标记的div,其中包含该值。