CSS селектор становится все медленнее и медленнее по всей странице очистки - PullRequest
0 голосов
/ 06 января 2020

Я пытаюсь очистить страницу, чтобы получить 3 разных фрагмента информации, каждая из которых встречается на странице 50 раз. При запуске программы, если я печатаю время, необходимое для выполнения функции выбора css, время замедляется, и медленнее по всей странице, и это продолжается при очистке других страниц. Почему это может происходить? После того, как 13 страниц соскребли, скорость замедлилась примерно на 5x

edit: я также проверил это, используя al oop, и то же самое происходит

def scrapepage_thread():
            global scrapetime
            start = time.time()
            now = datetime.datetime.now()
            name = driver.find_elements_by_class_name("Pic__container__name___26P8X")
            sell = driver.find_elements_by_id("sell")
            buy = driver.find_elements_by_id("buy")

            split=1

            names = [name[i:i + split] for i in range(0, len(name), split)]
            buys = [buy[i:i + split] for i in range(0, len(buy), split)]
            sells = [sell[i:i + split] for i in range(0, len(sell), split)]

            list = [['date','name',0,0] for i in range(len(name))]


            def do_name(name,index):

                starting_index = index*split

                for i in range(0,len(name)):

                    toAdd=[]
                    list[starting_index][0] = date

                    start = time.time()
                    test = name[i].find_element_by_css_selector('a').get_attribute('href')
                    list[starting_index][1] = test.rsplit('/', 1)[-1]

                    starting_index+=1

            def do_buy(buy,index):

                starting_index = index*split

                for i in range(0,len(buy)):

                    list[starting_index][2] = buy[i].text[1:]
                    starting_index+=1

            def do_sell(sell,index):

                starting_index = index*split

                for i in range(0,len(sell)):

                    list[starting_index][3] = sell[i].text[1:]
                    starting_index+=1



            i=0
            threads=[]

            for i in range(0,len(names)):
                threads.append(threading.Thread(target=do_name, args=(names[i],i)))
                threads.append(threading.Thread(target=do_sell, args=(sells[i],i)))
                threads.append(threading.Thread(target=do_buy, args=(buys[i],i)))

            for j in threads:
                j.start()

            for j in threads:
                j.join()
...