按文本查找元素并打印下一个/上一个兄弟

时间:2014-05-23 08:02:22

标签: python selenium xpath lxml lxml.html

我正在尝试抓取此页面的内容,     http://targetstudy.com/school/62292/universal-academy/

关注的是,有时数据按此顺序排列 名称地址引脚 - 移动 - 等。 有时地址不存在, 名称引脚-移动

没有定义特定的类,我不确定使用哪个xpath来获取确切的文本。我正在使用Selenium Python。

我们可以做一些像文本一样的元素和打印父母的下一个兄弟。 让我举个例子来澄清一下,

<td>
  <b>Address :</b>
  "  Sri Saadhuraam Parisar, Kosamnara, Kotra Road Raigarh "
  </td>

有没有办法按文字找到元素&#34;地址:&#34;让它打印下一行&#34; Sri Saadhuraam Parisar,Kosamnara,Kotra Road Raigarh&#34;

请有人劝告。提前谢谢。

到目前为止,这是我的代码的一部分,

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time
from selenium.webdriver.common.action_chains import ActionChains
import lxml.html
from selenium.common.exceptions import NoSuchElementException

path_to_chromedriver = 'chromedriver.exe'
browser = webdriver.Chrome(executable_path = path_to_chromedriver)
browser.get('http://targetstudy.com/school/62292/universal-academy/')
stuff = browser.page_source.encode('ascii', 'ignore')
tree = lxml.html.fromstring(stuff)
address1 = tree.xpath("//td[contains(text(), 'Address')]/text()")
print address1

2 个答案:

答案 0 :(得分:1)

如果地址始终位于<b>标记中,您可以使用:

//td[contains(b[1], 'Address')]/child::text()

答案 1 :(得分:0)

//b[contains(.,'Address')]/parent::td/text()

这可能会有所帮助,获取地址元素,&#34;跳跃&#34;直到作为td的父级并获取文本