此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示例,
答案 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/