Python爬虫如何实现1/7/14/28天间隔的日期循环爬取
多间隔日期爬取逻辑实现方法
直接在外层新增爬取间隔的遍历循环,把所有依赖间隔值计算的日期逻辑移入循环内部即可,不需要改动原有爬取函数和站点遍历的核心逻辑。
核心修改点
- 把需要用到的4个间隔值整理为列表:
[1, 7, 14, 28],作为外层循环的遍历对象 - 将
days、returndate、Hire_Start、Hire_End这几个和日期间隔绑定的变量,全部放到间隔循环内部,保证每次切换间隔时会重新计算对应日期 - 原有的站点遍历、文件夹创建、爬取调用逻辑作为内层循环,嵌套在间隔循环内执行
修改后可直接运行的代码
from datetime import date, timedelta pickupdate = date(2022, 6, 16) # 配置所有需要爬取的租期间隔 scrape_intervals = [1, 7, 14, 28] req_list = [cars, minibuses, trucks, vans] def offer(Hire_Start, Hire_End, req): # 保留你原有爬取逻辑即可 XXXXXXXXXXXXX # 按不同租期间隔依次执行爬取 for days_to_scrape in scrape_intervals: days = timedelta(days=days_to_scrape) returndate = pickupdate + days Hire_Start = pickupdate.strftime("%d-%m-%Y") Hire_End = returndate.strftime("%d-%m-%Y") # 遍历所有目标站点爬取当前间隔的数据 for req in req_list: create_folder_structure(req, Hire_Start) offer(Hire_Start, Hire_End, req)
避坑提示:不要把日期计算逻辑放在间隔循环外,否则切换间隔时不会更新还车日期,会导致所有间隔都用1天的租期参数爬取,结果不符合预期。后续如果要增减间隔值,直接修改
scrape_intervals列表的元素即可,不需要调整其他逻辑。
内容的提问来源于stack exchange,提问作者Singh
相关产品推荐
相关产品推荐

