飞书案例:
一、获取正文内容到剪切板
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、差不多先这样吧,有时间再优化,剩下自己手动微调