В приведенном ниже коде я пытаюсь импортировать шансы нескольких футбольных игр по разным 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