Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Python快速抓取动态网页_Python_Selenium_Web Scraping_Dynamic_Timing - Fatal编程技术网

用Python快速抓取动态网页

用Python快速抓取动态网页,python,selenium,web-scraping,dynamic,timing,Python,Selenium,Web Scraping,Dynamic,Timing,我一直在测试从赛车实时计时页面获取数据。它每秒更新几次。 我一直在使用Selenium通过id获取我要查找的数据。 但是有20个车手乘以11个数据。 这意味着在重新开始之前,需要大约3秒钟来获取这些数据。 有没有更快的办法 driverList = [] drivernums = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17',

我一直在测试从赛车实时计时页面获取数据。它每秒更新几次。 我一直在使用Selenium通过id获取我要查找的数据。 但是有20个车手乘以11个数据。 这意味着在重新开始之前,需要大约3秒钟来获取这些数据。 有没有更快的办法

driverList = []
drivernums = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12', '13', '14', '15', '16', '17',
              '18', '19', '20']
for d in range(1, 22):
    driverList.append(
        {"Pos": 0, "Name": '', "Lap": 0, "Gap": 0, "Interval": 0, "Pits": 0, 'Tyres': 0, 'S1': 0, 'S2': 0, 'S3': 0,
         'Laptime': 0})

while True:
    sessiontimeremaining = driver.find_element_by_id('stats_si_time')
    safetycar = driver.find_element_by_id('stats_si_safetycar')
    racelaps = driver.find_element_by_id('stats_si_laps')
    for d in drivernums:
        driverList[int(d)]['Pos'] = driver.find_element_by_id(f'i_{d}_pos').text
        driverList[int(d)]['Name'] = driver.find_element_by_id(f'i_{d}_nick').text[0:3].upper()
        driverList[int(d)]['Lap'] = driver.find_element_by_id(f'i_{d}_lap').text
        driverList[int(d)]['Gap'] = driver.find_element_by_id(f'i_{d}_gap').text
        driverList[int(d)]['Interval'] = driver.find_element_by_id(f'i_{d}_int').text[:-1]
        driverList[int(d)]['Pits'] = driver.find_element_by_id(f'i_{d}_pits').text
        driverList[int(d)]['Tyres'] = driver.find_element_by_id(f'i_{d}_tyres').text
        driverList[int(d)]['S1'] = driver.find_element_by_id(f'i_{d}_s1').text
        driverList[int(d)]['S2'] = driver.find_element_by_id(f'i_{d}_s2').text
        driverList[int(d)]['S3'] = driver.find_element_by_id(f'i_{d}_s3').text
        driverList[int(d)]['Laptime'] = driver.find_element_by_id(f'i_{d}_t').text

创建多个线程。小心,更快将使您从网站被列入黑名单:/您可以共享url吗@Wazted由于用户使用selenium,我不确定他为什么会被列入黑名单(只要他保持selenium页面处于活动状态,并且不多次重新加载它…,那么多线程就应该做到这一点)。这取决于页面是否处于活动状态或需要重新加载(因此我询问url)。对于多线程,它变得更容易了:我没有一遍又一遍地刷新页面——它自己就这么做了。我不知道如何创建多个线程。创建多个线程小心,更快将使您从网站被列入黑名单:/您可以共享url吗@Wazted由于用户使用selenium,我不确定他为什么会被列入黑名单(只要他保持selenium页面处于活动状态,并且不多次重新加载它…,那么多线程就应该做到这一点)。这取决于页面是否处于活动状态或需要重新加载(因此我询问url)。对于多线程,它变得更容易了:我没有一遍又一遍地刷新页面——它自己就这么做了。我不知道如何做多线程。