python+selenium网页多元素查找,无法进行一一匹配

magicyangqwe
  • 36

1.在爬取天眼查网站时,遇到网页有多个元素需要进行一一匹配,能够通过xpath找到多元素,但是进行一一匹配时,遇到问题,看了selenium官方文档,没有找到方法,希望大家能够帮一下忙,谢谢。
2.代码如下:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
def get_final_beneficiary(company): #用来获取最终受益人

global browser
browser = webdriver.Chrome()
browser.maximize_window()
company_name = company
url = 'https://www.tianyancha.com/'
browser.get(url)
wait = WebDriverWait(browser,10)
input = wait.until(EC.presence_of_element_located((By.XPATH,'//*[@id="page-container"]/div[1]/div/div[3]/div[2]/div[1]/div/input')))
submit = wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="page-container"]/div[1]/div/div[3]/div[2]/div[1]/button')))
input.send_keys(company_name)
submit.click()
company_info = wait.until(EC.element_to_be_clickable((By.XPATH,'//*[@id="page-container"]/div/div[2]/section/main/div[2]/div[2]/div/div/div[2]/div[2]/div[1]/div[1]/a')))
company_info.click()
current_windows = browser.window_handles  #以下这两句都是用来切换标签页的
browser.switch_to_window(current_windows[-1])
target = browser.find_element_by_xpath('//div[@data-dim="staff"]')
browser.execute_script("arguments[0].scrollIntoView();", target) #拖动到可见的元素去
try:
    target =  browser.find_elements_by_xpath('//div[@data-dim="staff"]//div[@class="tags-list"]')   #用来获取天眼查标签,例如最终受益人标签,大股东标签等。
    total_final_beneficiary = len(target)
    for final_beneficiary in target :
        name = final_beneficiary.get_attribute('textContent')
        if '最终受益人' in name:
            final_beneficiary = browser.find_element_by_xpath('//div[@class="tags-list"]/preceding-sibling::div[1]').text   #..代表父节点,这里是最终受益人的名字
            stock_hold = browser.find_element_by_xpath('//div[@class="tags-list"]/../../../following-sibling::td[3]').text.rstrip("股权链")   #这里是受益人的股份占比
            print(final_beneficiary,stock_hold)
        else:
            print('无法找到最终受益人,需要层层穿透或者用会员版查询')
except:
    print('无法找到最终受益人,需要层层穿透或者用会员版查询')
    traceback.print_exc()

get_final_beneficiary('成都和润新视界企业管理有限公司')


想要的效果:只要查找到最终受益人标签的,将其名字和持股比例打印出来就行了,但是现在的问题是:browser.find_element_by_xpath,永远都只能找出来第一个最终受益人的名字和持股比例,无法达到效果,另外,图片里面只是一种情况,可能有的只是前两个是最终受益人或者第一个是最终受益人,所以需要通过最终受益人的标签来查找股东名字和持股比例,昨天搜索了一晚上,始终没有找到方法,麻烦大家了。

回复
阅读 404
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏