selenium,统计某分支下有多少个同类子分支的方法(用于循环获取同类型子分支属性值)

利用selenium自动化统计微博阅读数

查看微博阅读数的元素路径

微博列表中第一条微博的元素路径“//*[@id="Pl_Official_MyProfileFeed__20"]/div/div[2]/div[2]/div/ul/li[1]/a/span/span/i”

当前页最后一条微博的元素路径“//*[@id="Pl_Official_MyProfileFeed__20"]/div/div[46]/div[2]/div/ul/li[1]/a/span/span/i”

可以发现其中规律,第二个div[]内的数字决定第几条微博

 

本来脚本可以写成for x in range(2,46):

后来发现,并不是每一页都会45条微博,需要先获取当前页到底有多少条

 

通过下面的写法实现统计

        path=browser.find_element_by_xpath("//*[@id='Pl_Official_MyProfileFeed__20']/div")
        list= path.find_elements_by_xpath("div")
        test=len(list)
        print(test)
      

先定义需要统计的分支的父分支,然后利用list函数统计需要统计的分支

需要注意,list后面的find_elements_by_xpath,elements是带s的

     path=browser.find_element_by_xpath("//*[@id='Pl_Official_MyProfileFeed__20']/div")
        list= path.find_elements_by_xpath("div")
        test=len(list)
        #print(test)
        for page in range(2,test):
            WebDriverWait(browser,30,0.2).until(lambda x:x.find_element_by_xpath("//*[@id='Pl_Official_MyProfileFeed__20']/div/div["+str(page)+"]/div[2]/div/ul/li[1]/a/span/span/i"))#等待登录界面出现
            num = browser.find_element_by_xpath("//*[@id='Pl_Official_MyProfileFeed__20']/div/div["+str(page)+"]/div[2]/div/ul/li[1]/a/span/span/i").text#获取阅读数
            #print(page)
            print(num)

 

执行后

 

 

 

 

 

posted @ 2019-11-25 14:05  小贝书屋  阅读(827)  评论(0编辑  收藏  举报