如何从C2Intel Feeds的CSV文件中提取指定IP所在行?
从C2Intel Feeds CSV中提取含指定IP的行
方案1:快速逐行匹配(适合无复杂字段的CSV)
直接远程获取文件内容,拆分字段后检查目标IP,避免部分匹配:
import requests target_ip = "54.161.191.72" csv_url = "https://raw.githubusercontent.com/drb-ra/C2IntelFeeds/master/feeds/domainC2swithURLwithIP-filter-abused.csv" # 获取远程CSV内容 resp = requests.get(csv_url) resp.raise_for_status() # 抛出请求错误,方便排查问题 # 逐行处理 for line in resp.text.splitlines(): # 拆分字段后检查IP,避免匹配到类似54.161.191.720的部分IP if target_ip in line.split(","): print(line)
方案2:用csv模块规范处理(兼容带特殊字符的CSV)
如果CSV存在字段内包含逗号的情况(示例中没有,但通用场景更可靠),用csv模块自动解析可变长度的行:
import requests import csv from io import StringIO target_ip = "54.161.191.72" csv_url = "https://raw.githubusercontent.com/drb-ra/C2IntelFeeds/master/feeds/domainC2swithURLwithIP-filter-abused.csv" resp = requests.get(csv_url) resp.raise_for_status() # 将响应转为可读取的文本流 csv_stream = StringIO(resp.text) reader = csv.reader(csv_stream) for row in reader: if target_ip in row: # 重新拼接成CSV格式输出 print(",".join(row))
常见错误排查
- 之前代码出错大概率是这几个原因:
- 未处理网络请求异常,添加
resp.raise_for_status()能快速定位连接、404等问题 - 直接用
target_ip in line导致部分IP匹配(比如把54.161.191.721的行误判),必须拆分字段后检查 - 手动处理换行符出错,用
splitlines()或csv模块可避免
- 未处理网络请求异常,添加
内容的提问来源于stack exchange,提问作者SergeT
相关产品推荐
相关产品推荐

