【发布时间】:2019-01-18 09:45:40
【问题描述】:
我在下面有这段代码,它使用 selenium 从网站中提取信息,代码工作正常,但速度很慢我想知道是否有什么可以改变的,以使程序运行得更快
from selenium import webdriver
from bs4 import BeautifulSoup
dat =[]
for m in range(1,10000):
driver = webdriver.Chrome()
driver.get("http://www.ultimatetennisstatistics.com/playerProfile?playerId="+str(m))
dat.append([driver.find_element_by_xpath('/html/body/h3').text])
dat.append(m)
try:
dropdown = driver.find_element_by_xpath('//*[@id="playerPills"]/li[9]/a')
dropdown.click()
bm = driver.find_element_by_id('statisticsPill')
bm.click()
driver.maximize_window()
soup = BeautifulSoup(driver.page_source,"lxml")
for i in soup.select('#statisticsOverview table tr'):
dat.append([x.get_text(strip=True) for x in i.select("th,td")])
driver.quit()
except ValueError:
print("error")
dat.append('????')
【问题讨论】:
-
重用驱动。你基本上使用了 10000 种不同的。这需要很多时间。所以在你的for循环之前实例化驱动程序。并将退出命令向下移动到底部。您可以考虑对站点进行反向工程,看看是否可以在没有硒的情况下提取数据。单击 bm 元素后,使用 chrome 并查看 networls 选项卡中发生的情况。也许您可以直接从同一个端点获取数据——就像网站一样。这通常是可能的,而且比浏览器自动化要快得多......
标签: python selenium web-scraping