Python爬虫抓取加密货币数据如何匹配关键词day后截断后续内容
问题解决代码及说明
核心修改逻辑如下:
- 去除冗余的多次文件读写操作,单轮遍历完成所有处理逻辑
- 支持自定义删除首次匹配到
day关键词上方的指定行数 - 首次命中
day关键词直接终止遍历,丢弃该行及所有后续内容
完整修改后代码
import os from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 配置项:首次匹配到day时,删除其上方的行数,不需要删除就设为0 DEL_LINES_ABOVE_DAY = 0 PATH = r"C:\Program Files (x86)\chromedriver.exe" driver = webdriver.Chrome(PATH) driver.get("https://coinmarketcap.com/new") try: main = WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, '//*[@id="__next"]/div[1]/div[1]/div[2]/div/div[2]')) ) except: driver.quit() target_keyword = "hours" txt = main.text if target_keyword in txt: print(txt) print("Newer cryptos found") else: print("No newer cryptos found") driver.quit() # 一次性完成所有内容处理,无需多次读写文件 all_lines = txt.splitlines() # 先过滤掉前7行无效头部 valid_lines = all_lines[8:] if len(all_lines) > 8 else [] # 遍历过滤有效内容 processed_lines = [] hit_day = False for line in valid_lines: if "day" in line: hit_day = True break processed_lines.append(line) # 按需删除day上方的指定行数 if hit_day and DEL_LINES_ABOVE_DAY > 0 and len(processed_lines) > DEL_LINES_ABOVE_DAY: processed_lines = processed_lines[:-DEL_LINES_ABOVE_DAY] # 写入最终结果 with open("CoinMC.txt", "w", encoding="utf-8") as f: f.write("\n".join(processed_lines))
逻辑说明
- 配置项
DEL_LINES_ABOVE_DAY可灵活调整要删除的关键词上方行数,不需要删除时保持为0即可 - 遍历内容时只要第一次检测到含
day的行就直接终止循环,后续所有内容全部丢弃,不会写入结果文件 - 合并了原来多次读写文件的逻辑,直接在内存中处理字符串,执行效率更高,也避免了临时文件的操作风险
内容的提问来源于stack exchange,提问作者user11789192
相关产品推荐
相关产品推荐

