питон красивая розетка - PullRequest
0 голосов
/ 14 января 2019

Мои первые сообщения в stackoverflow ... :-) Мой проект: я хотел бы получить данные о скорости моего интернета, заданные сайтом http://www.bredbandskollen.se/, используя ежедневную процедуру Python, используя beautifullsoup.

Несмотря на то, что я определил различные способы получения результата теста, который меня интересует, используя bs, я застрял в том простом факте, что мне не удается запустить / активировать тест скорости (в основном это будет нажатие кнопки).

Я мог заметить, что не отправлена ​​обычная форма HTML5. Вместо этого я увидел запрос "ws", в котором я понятия не имею, что это такое.

Есть ли у кого-нибудь идеи, как инициировать ускоренное тестирование, имитировать нажатие кнопки или советовать мне, как обрабатывать ws-запрос?

ТНХ.

1 Ответ

0 голосов
/ 14 января 2019

Селен был бы хорошим способом симулировать процесс открытия страницы, затем нажать кнопку. Затем он ожидает завершения теста и получает результаты.

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec

driver = webdriver.Chrome("C:/chromedriver_win32/chromedriver.exe")

driver.get("http://www.bredbandskollen.se/")
driver.find_element_by_id("mainStartTest").click()

# Waits until test is complete. Timesout after 60 seconds
WebDriverWait(driver, 60).until(ec.presence_of_element_located((By.XPATH, './/span[@class = "bbk-test-info-value" and text() != ""]')))


# Get the results
results = driver.find_elements_by_xpath('.//span[@class = "bbk-test-box-result"]')
dlSpeed = results[0].text
ulSpeed = results[1].text
ltSpeed = results[2].text

print ('Results\nDownloading: %s\nUploading: %s\nLatency: %s' %(dlSpeed, ulSpeed, ltSpeed))

driver.close()

Выход:

Results
Downloading: 39,86 Mbit/s
Uploading: 4,16 Mbit/s
Latency: 240,15 ms

Вы все еще можете использовать BeautifulSoup, но это произойдет только после запуска теста. Но не обязательно, но, по крайней мере, позволяет вам увидеть, как селен и BeautifulSoup используются для поиска тегов с данными, которые вы хотите:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ec
import bs4

driver = webdriver.Chrome("C:/chromedriver_win32/chromedriver.exe")

driver.get("http://www.bredbandskollen.se/")
driver.find_element_by_id("mainStartTest").click()

# Waits until test is complete. Timesout after 60 seconds
WebDriverWait(driver, 60).until(ec.presence_of_element_located((By.XPATH, './/span[@class = "bbk-test-info-value" and text() != ""]')))


# Get the results
soup = bs4.BeautifulSoup(driver.page_source, 'html.parser')
results = soup.find_all('span', {'class':'bbk-test-box-result'})

dlSpeed = results[0].text
ulSpeed = results[1].text
ltSpeed = results[2].text

print ('Results\nDownloading: %s\nUploading: %s\nLatency: %s' %(dlSpeed, ulSpeed, ltSpeed))

driver.close()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...