Как ускорить этот процесс очистки веб-страниц JavaScript? - PullRequest
0 голосов
/ 12 февраля 2019

Эта функция python предназначена для удаления определенного идентификатора (называемого PMID) с веб-страницы JavaScript.Когда URL передается функции, он получает страницу с использованием селена.Затем код пытается найти класс «pubmedLink» в теге html.Если он найден, он возвращает извлеченный PMID другой функции.

Это отлично работает, но буквально очень медленно.Есть ли способ ускорить процесс, возможно, с помощью другого парсера или с совершенно другим методом?

from selenium import webdriver


def _getPMIDfromURL_(url):

    driver = webdriver.Chrome('/usr/protoLivingSystematicReviews/drivers/chromedriver')
    driver.get(url)

    try:
        if driver.find_element_by_css_selector('a.pubmedLink').is_displayed():
            json_text = driver.find_element_by_css_selector('a.pubmedLink').text
            return json_text
    except:
        return "no_pmid"

    driver.quit()

Примеры URL для веб-страницы JS,

Ответы [ 2 ]

0 голосов
/ 12 февраля 2019

Ну, селен быстрый, поэтому любимый у многих тестеров.С другой стороны, вы можете улучшить свой код, проанализировав содержимое один раз вместо двух.

Возвращаемое значение оператора

 driver.find_element_by_css_selector('a.pubmedLink')

может храниться в переменной и использовать эту переменную.Это улучшит вашу скорость примерно в 1,5 раза.

try:
    elem =driver.find_element_by_css_selector('a.pubmedLink')
    if  elem.is_displayed():
        return elem.text
except:
    return "no_pmid
0 голосов
/ 12 февраля 2019

Вы можете попробовать фантомы, это быстрее: https://realpython.com/headless-selenium-testing-with-python-and-phantomjs/

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