Как сократить время руководства с помощью webdriver с python - PullRequest
2 голосов
/ 19 июня 2020

В приведенном ниже коде я пытаюсь импортировать шансы нескольких футбольных игр по разным URL-адресам. Я использовал webdriver. firefox для перехода к каждой из этих веб-страниц. Моя проблема в том, что время выполнения слишком велико.

В моем случае есть 25 URL-ссылок, но в первый раз я провожу тест только с 4-мя ссылками. Время выполнения составляет 2,37 мин, так что для 25 url-ссылок это займет около 20 минут. Слишком много времени. Поэтому я хотел бы знать, можно ли на этот раз улучшить и оптимизировать

Вот мой код:

#!/usr/bin/python3
# -*- coding: utf­-8 ­-*-

from selenium import webdriver
import statistics as stat
import numpy as np

driver = webdriver.Firefox()
url = 'https://www.coteur.com/cotes-foot.php'
driver.get(url)

#Store url associated with the soccer games
url_links = []
for i in driver.find_elements_by_xpath('//a[contains(@href, "match/cotes-")]'):
    url_links.append(i.get_attribute('href'))

driver.close()
print(len(url_links))

for l in range(0, 4):
    driver = webdriver.Firefox()
    driver.get(url_links[l])

    #Store odds into table
    odds = []
    header = []
    for i in driver.find_elements_by_xpath('//button[contains(@class, "btn btn-default btn-xs btncote")]'):
        odds.append(i.text)

    for i in driver.find_elements_by_xpath('//th[contains(@width, "20%")]'):
        header.append(i.text)

    rows = int(len(odds)/3) 
    columns = 3
    odds = [float(i) for i in odds]
    odds = np.array(odds)
    header = np.array(header)
    odds = odds.reshape(rows, columns)

    print(odds, '\n')
    driver.close()

Вот результат:

hao@hao-ThinkPad-T420:~$ time ./parallel.py 
25
[[1.28 5.2  7.25]
 [1.33 4.7  6.55]
 [1.33 4.6  6.5 ]
 [1.37 4.4  6.  ]
 [1.37 4.4  6.  ]
 [1.3  4.6  7.  ]
 [1.31 4.5  6.7 ]
 [1.31 4.7  6.3 ]
 [1.27 4.8  7.  ]
 [1.26 4.8  6.75]
 [1.25 4.9  6.75]
 [1.24 4.7  6.75]] 

[[1.8  3.58 3.77]
 [1.8  3.35 3.9 ]
 [1.8  3.4  3.7 ]
 [1.8  3.36 3.62]
 [1.8  3.35 3.55]
 [1.8  3.35 3.5 ]
 [1.73 3.45 3.55]
 [1.73 3.4  3.6 ]
 [1.73 3.4  3.6 ]
 [1.76 3.3  3.45]
 [1.72 3.35 3.55]] 

[[3.5  3.7  1.8 ]
 [2.98 3.51 1.96]
 [2.95 3.5  1.95]
 [2.91 3.5  1.96]
 [3.35 3.7  1.75]
 [3.22 3.6  1.81]
 [3.25 3.6  1.78]
 [3.3  3.75 1.73]
 [3.3  3.65 1.73]
 [3.3  3.6  1.72]
 [2.5  3.1  2.2 ]] 

[[3.3  3.5  2.32]
 [3.4  3.55 2.25]
 [3.4  3.55 2.25]
 [3.4  3.55 2.25]
 [3.4  3.55 2.25]
 [3.35 3.35 2.3 ]
 [3.25 3.45 2.22]
 [3.25 3.4  2.22]
 [3.3  3.45 2.15]
 [3.3  3.25 2.2 ]
 [3.15 3.3  2.17]] 


real    2m37,742s
user    1m1,416s
sys 0m11,797s
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...