Selenium 如何使用xpath获取HTML的以下同级或子级
我有一些HTML我正在努力刮。努力学习硒。我需要的是“时尚”、“长”等词。 我试过:Selenium 如何使用xpath获取HTML的以下同级或子级,selenium,xpath,screen-scraping,Selenium,Xpath,Screen Scraping,我有一些HTML我正在努力刮。努力学习硒。我需要的是“时尚”、“长”等词。 我试过: style = driver.find_element_by_xpath("//strong[text()='Style:']/following::strong").text style = driver.find_element_by_xpath("//strong[text()='Style:']/following-sibling::strong").tex
style = driver.find_element_by_xpath("//strong[text()='Style:']/following::strong").text
style = driver.find_element_by_xpath("//strong[text()='Style:']/following-sibling::strong").text
style = driver.find_element_by_xpath("//strong[contains(.,'Style:')] /preceding-sibling::strong").text
以及介于两者之间的一切
<div class="xxkkk20">
<strong>Style:</strong> Fashion <br>
<strong>Shirt Length:</strong> Long <br>
<strong>Collar:</strong> Scoop Neck <br>
<strong>Material:</strong> Polyester <br>
<strong>Pattern Type:</strong> Floral,Skulls <br>
<strong>Embellishment:</strong> Lace <br>
<strong>Thickness:</strong> Standard <br>
<strong>Fabric Stretch:</strong> High Stretch <br>
<strong>Seasons:</strong> Summer <br>
<strong>Weight:</strong> 0.1700kg <br>
<strong>Package Contents:</strong> 1 x Tank Top
</div>
风格:时尚
衬衫长度:长
衣领:大圆领
材料:聚酯
图案类型:花卉、头骨
装饰:蕾丝
厚度:标准
织物弹性:高弹性
季节:夏季
重量:0.1700kg
包装内容物:1个罐顶
您可以将所有元素存储在如下所示的列表中,并在列表中迭代以获取所有web元素,最后应用text方法提取文本
all_elements = driver.find_elements(By.XPATH, "//div[@class='xxkkk20']/strong")
for ele in all_elements:
print(ele.text)
更新1:
keys = driver.find_elements(By.XPATH, "//strong")
for key in keys:
print(key.get_attribute('innerHTML'))
说明:首先,获取父
div
元素中的所有文本。然后根据
元素将其拆分为\n
。现在,您实际上应该有两对文本,如
Style:Fashion
由于您只想获得第二个值,因此需要拆分每一对并获得第二个子字符串。
我建议在成对字符串中的第一个和第二个文本之间有一个空格。
如果没有空格,您仍然可以最后通过
:
将其拆分,因此它将如下所示:
pairs = driver.find_elements(By.XPATH,'//div[@class="xxkkk20"]')text.split("\n")
for pair in pairs:
texts = pair.split(":")
print(texts[1])
试试这个
textValues = driver.find_elements_by_xpath('//div[@class="xxkkk20"]')text.split("\n")
for txt in textValues:
print(txt.split(":")[1].strip())
刚刚印了钥匙。我需要钥匙后面的东西。谢谢。@tejas:查看Update1部分我无法获取文本。拆分(“\n”)它给了我一个属性errion在
pairs=driver之后的pairs
中看到了什么。查找元素(By.XPATH,//div[@class=“xxkkk20”]”)。文本
?如果没有.split(“\n”)
如果它是null
可能您缺少了一些等待/延迟,或者元素在iframe中?我得到:indexer:list索引超出范围。不,我是在问:如果这样做:pairs=driver.find_元素(By.XPATH,//div[@class=“xxkkk20”]).text
变量对的内容是什么<代码>对应该包含父div
element中的全部文本。我在棋盘的帮助下玩了更多的东西,得到了这个:material=[material]print(material)这是我得到的输出:['款式:时尚\n短款:长款\n厚款:大圆领\n材质:聚酯纤维\n款式类型:花卉,头骨\n肚皮:花边\n厚度:标准\n面料拉伸:高拉伸\n季节:夏季\n重量:0.1700kg\n包装内容物:1件背心']
textValues = driver.find_elements_by_xpath('//div[@class="xxkkk20"]')text.split("\n")
for txt in textValues:
print(txt.split(":")[1].strip())