You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 03:27:04