zoenbo 发表于 2021-5-7 11:26

Python大佬帮我看看这个HTML合并问题

本帖最后由 zoenbo 于 2021-5-7 20:58 编辑

1。以index.html为主文件,其他所有的html页面<body></body>里的内容合并在index.html的已有内容的末尾与</body>之间的位置,目前合并后,主文件index.html的</body>及下边的至</html>的内容没了。该怎么解决呢?
2。合并后不要内容重复
3。f1 = open('index.html', 'r', encoding='UTF-8') 这块能不能调用文件对话框

https://wwe.lanzouj.com/iMHMYovv29c 附件

# -*- coding: utf-8 -*-

import re
import os

# 旧文件名
f1 = open('index.html', 'r', encoding='UTF-8')
# 新文件名
f2 = open('new.html', 'w', encoding='UTF-8')
data = f1.read()

# 找到</body>位置
tell = data.find('</body>')

# 写入文件
f1.seek(0)
f2.write(f1.read(tell))

# 循环读取指定文件夹内的html文件
root = './'
files = os.listdir(root)
# 默认排序?
files.sort()
#
rec = re.compile('<body.*?>(.*?)</body>', re.S)
for file in files:
    f = open('%s\\%s' % (root, file), 'r', encoding='utf-8')
    res = rec.search(f.read())
    if res:
      f2.write(res.group(1))
    else:
      print('没有匹配到数据,跳过写入!')

# 最后写入剩余内容
f2.write(f1.read())

fanvalen 发表于 2021-5-7 13:58

你这些的啥垃圾代码 完全不按套路来

zoenbo 发表于 2021-5-7 14:08

fanvalen 发表于 2021-5-7 13:58
你这些的啥垃圾代码 完全不按套路来

大佬见笑了,实际上这也不是我写的,以我的能力我连上面这段都写不出来。{:301_1009:}

fanvalen 发表于 2021-5-7 14:11

zoenbo 发表于 2021-5-7 14:08
大佬见笑了,实际上这也不是我写的,以我的能力我连上面这段都写不出来。

我记得以前给写过这个功能

zoenbo 发表于 2021-5-7 14:13

fanvalen 发表于 2021-5-7 14:11
我记得以前给写过这个功能

我之前发过一个帖子,就是HTML合并的,那个帖子不知道咋回事,始终找不到了。

Rezalt 发表于 2021-5-7 14:19

最简单的方法 ! 获取</body>的下标之后, 正则匹配出其他网页的内容直接字符串切片拼接就好了

zoenbo 发表于 2021-5-7 14:28

Rezalt 发表于 2021-5-7 14:19
最简单的方法 ! 获取的下标之后, 正则匹配出其他网页的内容直接字符串切片拼接就好了

我这思路大概是有的,就是手不给力,写不出能解决的了的代码。{:301_977:}

fanvalen 发表于 2021-5-7 20:39

import re,os
#操作把子htm文件移动到当前add文件夹里(懒得去排除index,py,txt什么鬼文件)

#读取index 去掉body后缀,写入新文件中
indhtm=open('index.html',encoding='utf-8').read()
ml=re.sub('</body>[\s\S]+</html>','',indhtm)
with open('new.htm','a+',encoding='utf-8')as f:
    f.write(ml)
#获取所有子htm文件名并按升序排序
adls=os.listdir('./add/')
adls.sort()

for i in adls:
    #打开子htm并取body 追加到new后面
    zhtm=open('./add/'+i,encoding='utf-8' ).read()
    p=r'<body>([\s\S]+)</body>'
    zbd=re.findall(p,zhtm)
    with open('new.htm','a+',encoding='utf-8')as f:
      f.write('    '+zbd+'\n')
#最后写入body后缀
with open('new.htm','a+',encoding='utf-8')as f:
    f.write('</body>\n</html>')
print('处理完成')

zoenbo 发表于 2021-5-7 20:57

fanvalen 发表于 2021-5-7 20:39
import re,os
#操作把子htm文件移动到当前add文件夹里(懒得去排除index,py,t ...

大佬,请收下我的膝盖~简直不要太完美!帅呆了~~{:1_921:}{:1_919:}
页: [1]
查看完整版本: Python大佬帮我看看这个HTML合并问题