Сделайте так, чтобы селен быстрее просматривал список сайтов - PullRequest
0 голосов
/ 01 апреля 2019

У меня есть код с селеном, который возвращает название списка сайтов.Этот заголовок создается с помощью Javascript (после загрузки веб-сайта он переходит от «Загрузка ...» к правильному заголовку примерно через полсекунды.) По этой причине программа загружает веб-сайт, ожидает изменения заголовка,и затем возвращает измененный заголовок.

Это код:

from pyvirtualdisplay import Display
from time import sleep
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from selenium import webdriver
from selenium.common.exceptions import TimeoutException
from selenium.webdriver.firefox.options import Options
display = Display(visible=0, size(800,600))
display.start()
urlsFile = open ("urls.txt", "r")
urls = urlsFile.readLines()
driver = webdriver.Firefox(executable_path='/usr/local/lib/geckodriver/geckodriver')
driver.set_page_load_timeout(60)
for url in urls:
        try:
           driver.get(url)
           sleep(0.8)
           print(driver.title)
        except TimeoutException as e:
           print("Timeout")
driver.quit()

Проблема в том, что список URL-адресов очень большой, поэтому для каждого веб-сайта мне приходится ждатьдля его загрузки, а затем 0,8 секунды для изменения названия и печати.Будет ли способ ускорить процесс?Например, загружая сразу несколько веб-сайтов или загружая следующий веб-сайт в течение 0,8 секунд, которые нужно ждать, пока предыдущий обновится с заголовком, чтобы это время не было потрачено зря.

1 Ответ

0 голосов
/ 01 апреля 2019

Не знаю, с какими URL-адресами вы пытаетесь использовать, но вы можете рассмотреть следующий подход, при котором вы получите заголовок URL-адреса, не загружая браузер (это ускорит ваши тесты)

import urllib
import requests
from bs4 import BeautifulSoup

soup = BeautifulSoup(urllib.request.urlopen("https://www.google.com"), "lxml")
print (soup.title.string)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...