如何加快JavaScript网页抓取的过程?

时间:2019-02-12 11:04:57

标签: python performance web-scraping

此python函数旨在从JavaScript网页中抓取特定标识符(称为PMID)。将URL传递给函数时,它将使用硒获取页面。然后,代码尝试在html的标记内找到类“ pubmedLink”。如果找到,它将提取的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()

JS网页的URL示例,

2 个答案:

答案 0 :(得分:1)

好吧,硒快,这就是为什么它是许多测试人员最喜欢的原因。另一方面,您可以通过解析一次内容而不是两次内容来改进代码。

语句的返回值

 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

答案 1 :(得分:0)

您可以尝试phantomjs,它的速度更快: https://realpython.com/headless-selenium-testing-with-python-and-phantomjs/