Selenium中如何通过section类区分定位获取目标邮箱地址
问题:Python Selenium无法精准定位联系人邮箱地址
我想用Python Selenium获取目标邮箱 caioplinio@hotmail.it,但当前代码返回的是个人主页链接,无法区分邮箱对应的元素。
目标HTML关键片段
<section class="pv-contact-info__contact-type ci-vanity-url"> <div class="pv-contact-info__ci-container t-14"> <a href="https://www.mywebsite.com" class="pv-contact-info__contact-link link-without-visited-state t-14"> mywebsite.com/italia/caio_plinio </a> </div> </section> <section class="pv-contact-info__contact-type ci-email"> <div class="pv-contact-info__ci-container t-14"> <a href="mailto: caioplinio@hotmail.it" class="pv-contact-info__contact-link link-without-visited-state t-14" target="_blank" rel="noopener noreferrer"> caioplinio@hotmail.it </a> </div> </section>
我编写的代码片段
contact_info = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.CLASS_NAME, 'pv-contact-info__ci-container'))) # Find the email element within the contact info section email_element = contact_info.find_element(By.CSS_SELECTOR, 'a.pv-contact-info__contact-link') email = email_element.get_attribute('innerHTML') print(email)
当前输出
mywebsite.com/italia/caio_plinio
期望输出
caioplinio@hotmail.it
我知道需要通过section的类来区分定位,但不知道怎么写代码,求相关提示。
解决方案提示
核心思路是先定位到包含邮箱的section元素,再在这个section内查找链接,而非直接定位所有pv-contact-info__ci-container:
方法1:用CSS层级选择器直接定位邮箱链接
直接指定带有ci-email类的section下的目标链接:email_element = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CSS_SELECTOR, 'section.ci-email a.pv-contact-info__contact-link')) )方法2:先定位邮箱section,再内部查找链接
email_section = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.CLASS_NAME, 'ci-email')) ) email_element = email_section.find_element(By.CSS_SELECTOR, 'a.pv-contact-info__contact-link')补充优化:获取文本时用
text属性替代innerHTML,能自动剔除冗余空格:email = email_element.text.strip()
内容的提问来源于stack exchange,提问作者Lorenzo Castagno
相关产品推荐
相关产品推荐

