首先将页面上的所有文字,CTRL+A,CTRL+C,CTRL+V,粘贴到python脚本的文件夹,然后。
第一个函数要求的文件名称为“lilianjie.txt”,第二个函数要求的文件名称为:txt文件名称中含有“无码分析”这四个字
网页上的磁力参考格式:
函数一适用:
ABC-948 小野野
magnet:?xt=urn:btih:59ABC-225 小红
magnet:?xt=urn:btih:AD函数二适用:
小明
ABCD-001(巅峰……)
magnet:?xt=urn:btih:20
ABC-001(RTWSDF……)
magnet:?xt=urn:btih:49
以下是代码:
import os.path
import re
import pandas as pd
import matplotlib.pyplot as plt
with open('李连杰.txt', 'r', encoding='utf-8') as f:
data_ = f.readlines()
save_list = []
def to_scv_():
print(data_)
temp_tup = []
for i in data_:
find_name_1 = re.findall('([a-zA-Z]+-\d+)\n', i) # 匹配编号的行(只有编号)
if len(find_name_1):
print(find_name_1)
temp_tup.append(find_name_1[0])
temp_tup.append('') # 无名
else:
find_name_2 = re.findall('([a-zA-Z]+-\d+) (.*?)\n', i) # 匹配名称的行(匹配中文)(只有名称)
if len(find_name_2):
print(find_name_2)
temp_tup.append(find_name_2[0][0])
temp_tup.append(find_name_2[0][1])
# 顺序不能反,因为2中也有中文,还有编号,所以2查询在前
else:
find_name_3 = re.findall('([\u4e00-\u9fa5]+)\n', i) # 匹配编号 名称的行(编号,名称都有)
if len(find_name_3):
print(find_name_3)
temp_tup.append('') # 无编号
temp_tup.append(find_name_3[0])
magnet_ = re.findall('(magnet:.*?)\n', i) # 匹配磁力
if len(magnet_):
temp_tup.append(magnet_[0])
save_list.append(temp_tup)
temp_tup = [] # 只有在追加完名称,现在加完磁力才是一个完整的list,这时才清空
print(save_list)
for i in save_list:
print(i)
save_dic = ({'编号': row[0], '名称': row[1], '磁力链接': row[2]} for row in save_list)
pd1 = pd.DataFrame(save_dic)
pd1.to_csv('mysave.csv', encoding='gbk', index=False, header=None)
def forum_find_txt2csv():
def find_first_non_empty(data):
for item in data:
for element in item:
if element: # 如果元素不是空字符串
return element
return None # 如果没有找到非空元素,返回None
magnet_list = []
save_temp_ = []
save_list_ = []
for i in os.listdir('./'):
if '无码分析' in i:
with open(f'{i}', 'r', encoding='utf-8') as f:
data1 = f.read()
magnet_list.append(data1)
print(len(magnet_list))
clear_list_ = []
for i in magnet_list:
temp_ = i.split('\n\n\n')
for j in temp_:
if j == '':
continue
clear_list_.append(j)
for i in clear_list_:
"""匹配角色名字"""
find_name_1 = re.findall('(.*?)\n([a-zA-Z]+-\d+)*(FC2-PPV-\d+)*.*?\n', i) # 匹配编号的行(只有编号)
if ',' in find_name_1[0][0]:
name0 = i.split(',')[0]
name0 = name0.replace('\n', '')
else:
name0 = i.split('\n')
for j in name0:
if j != '':
if ',' in j:
name0 = j.split(',')[0]
else:
name0 = j
break
save_temp_.append(name0)
# print(f'name:{name0}\n----------')
temp_name_list = ([name0])
"""匹配编号和磁力"""
for j in i.split('\n'):
find_name_2 = re.findall('([a-zA-Z]+-\d+)', j) # 匹配编号的行(只有编号)
if len(find_name_2):
find_name_2 = re.findall('([a-zA-Z]+-\d+)*(FC2-PPV-\d+)*(FC2-\d+)*', j) # 匹配名称的行(匹配中文)(只有名称)
if len(find_name_2):
num_ = find_first_non_empty(find_name_2)
print('num_ = ', num_)
save_temp_.append(num_)
magnet_ = j if 'magnet:?xt=urn:btih:' in j else ''
if len(magnet_):
print('magnet_ = ', magnet_)
save_temp_.append(magnet_)
save_list_.append(save_temp_) # 在这里统一存储,这样上面地num和magnet都能存起来了
save_temp_ = list(temp_name_list)
save_temp_ = []
for i in save_list_:
print(i)
save_dic = ({'姓名': row[1], '编号': row[0], '磁力链接': row[2]} for row in save_list_)
pd1 = pd.DataFrame(save_dic)
pd1.to_csv('new_save.csv', encoding='gbk', index=False, header=None)
# to_scv_()
forum_find_txt2csv()