python将页面找上的磁力(特别多)存到csv

首先将页面上的所有文字,CTRL+A,CTRL+C,CTRL+V,粘贴到python脚本的文件夹,然后。

第一个函数要求的文件名称为“lilianjie.txt”,第二个函数要求的文件名称为:txt文件名称中含有“无码分析”这四个字

网页上的磁力参考格式:

函数一适用:

ABC-948 小野野
magnet:?xt=urn:btih:59

ABC-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()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值