暴力强行复制网页内容,终极手法

飞书案例:

  1. 关闭云文档的复制、下载等权限

一、获取正文内容到剪切板

1,把网页全屏显示,ctrl+鼠标滚轮,缩放整个网页到最小,尽量把一个屏幕的内容都完整显示出来就行

原因:有的网页里,包含正文内容部分的div源码部分,是动态显示出来的,是根据当前浏览的页面高度才显示文字内容都的

白话讲:就是那文章你看到中间那部分,按F12查看源码,发现源码里只显示正在看的中间这一段的内容,前面后面的内容没有,直到滚动网页内容,源码也跟着在变。

ps:网页内容不多时,缩放到一个屏幕显示完整,这时源码就显示完整 不会动了

2,缩放网页到最小后,按F12,设置开发者面板靠右侧(点左上角那三个点,下图1、2步)

3,点面板左上角的小箭头,鼠标移动到网页正文内容,选中包含正文容部分的源码,右键菜单复制outerHTML,(下图3、4、5、6步)

二、文本处理,过滤不必要的字符,保留中文、中文标点符号和换行

主要是删除:a-zA-Z/\-(<"),\=>:;_*~?& 这些字符

1,CV大法,释放剪切板里的屎到文本编辑器, 保存

2,这里用 python 处理,我很懒直接面向cmd操作,这里得到行首有数字的文本

import re

# 读取txt文本
with open('1.txt', 'r', encoding='utf-8') as f:
    content = f.read()

# 使用正则表达式匹配并删除不需要的字符有:a到z、A到Z、/-(<"),\=>:;_*~?.&
# 这里面 \- 表示 -,数字0-9,根据需要自己加
pattern = r'[a-zA-Z/\-(<"),\=>:;_*~?.&\s]'

result = re.sub(pattern, '', content)
result

# 处理换行
result = result.replace('\u200b','\n')
result

# 保存到 2.txt
with open('2.txt', 'w', encoding='utf-8') as f:
    f.write(result)

3、如果正文内容行首没有数字编号之类的,则直接用下面的代码删除行首的数字。

如果内容不多,行首有数字编号的,自己微调,手动加上。

如果行首数字批量相同,建议用支持列选的文本编辑器,批量替换

# 读取txt
with open('2.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

new_lines = []
for line in lines:
    # 检查是否包含中文字符
    if re.search(r'[\u4e00-\u9fa5]', line):
        # 删除行首数字
        new_line = re.sub(r'^\d+', '', line)
        new_lines.append(new_line)

new_lines

# 保存到 3.txt
with open('3.txt', 'w', encoding='utf-8') as f:
    f.writelines(new_lines)

4、行处理,删除每行两个中文字符之间的长数字

# 该行两个中文字符之间的数字超过8位以上,则删除这两个字之间的数字,保留中文
def process_txt(file_path):
    with open(file_path, 'r', encoding='utf-8') as f:
        lines = f.readlines()
    new_lines = []
    for line in lines:
        # 去除当前行的首尾空白字符
        line = line.strip()
        # 判断当前行是否为空
        if not line: continue
        # 查找当前行中的所有中文字符,并将它们存储在一个列表中
        chinese_chars = re.findall(r'[\u4e00-\u9fa5。?!,、;:“”‘’——……《》〈〉()]', line)
        # 是否包含中文字符
        if not chinese_chars: continue
        new_line = ''
        # 遍历当前行中的每个字符及其索引
        for i, char in enumerate(line):
            # 当前字符是中文,添加到 new_line
            if char in chinese_chars:
                new_line += char
                # 当前字符后面是中文
                if i + 1 < len(line) and line[i + 1] in chinese_chars: continue
            # 是数字
            #elif char.isdigit():
            #    # 当前字符前、后面是数字,则,,,,好困
            #    if i > 0 and line[i ] in chinese_chars:
            #        new_line += char
        new_lines.append(new_line+'\n\n')
    print(new_lines)
    with open('4.txt', 'w', encoding='utf-8') as f:
        f.writelines(''.join(new_lines))

process_txt('3.txt')

6、差不多先这样吧,有时间再优化,剩下自己手动微调

  • 8
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值