Selenium - 如何在兄弟元素间跳转

1 投票
1 回答
2641 浏览
提问于 2025-04-18 07:24

我正在使用Selenium-Python来抓取这个链接的内容。http://targetstudy.com/school/62292/universal-academy/

HTML代码大致是这样的,

<tr>
  <td>
    <i class="fa fa-mobile">
      ::before
    </i>
  </td>
  <td>8349992220, 8349992221</td>
 </tr>

我不太确定怎么用class="fa fa-mobile"来获取手机号码。有人能帮忙吗?谢谢!

    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/i[@class="fa fa-mobile"]/parent/following-sibling/following-sibling::text()')

    print address1

1 个回答

2

你不需要用到 lxml.htmlSelenium定位元素 方面非常强大。

你可以把 //i[@class="fa fa-mobile"]/../following-sibling::td 这个 xpath 表达式传给 find_element_by_xpath() 方法:

>>> from selenium import webdriver
>>> browser = webdriver.Firefox()
>>> browser.get('http://targetstudy.com/school/62292/universal-academy/')
>>> browser.find_element_by_xpath('//i[@class="fa fa-mobile"]/../following-sibling::td').text
u'83499*****, 83499*****'

注意,这里加了 * 是为了不显示真实的数字。

这个 xpath 首先找到带有 fa fa-mobile 类的 i 标签,然后再找到它的父元素,接着获取下一个兄弟元素 td

希望这对你有帮助。

撰写回答