如何在Python中同时执行任务以同步采集同一HTML源数据
问题解决:同步采集数据生成两个列表
问题背景
需要从同一HTML数据源生成两个列表,要求同时采集数据避免时间推移导致数据更新。现有代码分两次循环采集,导致第二个列表的数据已随时间更新,不符合预期。
现有代码
lok = [] num = 6 for _ in range(num): inner = driver.find_element_by_xpath( "/html/body/div[1]/div[2]/div/div/div/div[2]/div/div/div/div[2]/div[2]/div/div/div[2]/div[5]/span[1]").get_attribute( "innerHTML") lok.append(inner) time.sleep(3600) print(lok) lokk = [] nums = 7 for _ in range(nums): inner = driver.find_element_by_xpath( "/html/body/div[1]/div[2]/div/div/div/div[2]/div/div/div/div[2]/div[2]/div/div/div[2]/div[5]/span[1]").get_attribute( "innerHTML") lokk.append(inner) time.sleep(3600) print(lokk)
当前采集结果
lok = ['1', '2', '3', '4', '5', '6'] lokk = ['7', '8', '9', '10', '11', '12', '13']
期望结果
lok = ['1', '2', '3', '4', '5', '6'] lokk = ['1', '2', '3', '4', '5', '6', '7']
解决方案
核心思路是只采集一次完整的序列,再根据两个列表的长度需求截取数据,确保两个列表基于同一批原始采集数据,避免时间差导致的更新问题。
修改后的代码:
# 先采集足够覆盖两个列表最大长度的数据 max_count = max(6, 7) raw_data = [] for _ in range(max_count): inner = driver.find_element_by_xpath( "/html/body/div[1]/div[2]/div/div/div/div[2]/div/div/div/div[2]/div[2]/div/div/div[2]/div[5]/span[1]").get_attribute( "innerHTML") raw_data.append(inner) time.sleep(3600) # 按需求生成两个列表 lok = raw_data[:6] lokk = raw_data[:7] print(f"lok = {lok}") print(f"lokk = {lokk}")
代码说明
- 先计算两个列表所需的最大采集次数(此处为7次),一次性完成所有数据采集并存入
raw_data - 直接从
raw_data中截取对应长度的元素生成目标列表,确保两个列表数据完全同步
内容的提问来源于stack exchange,提问作者damian2345673
相关产品推荐
相关产品推荐

