吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1555|回复: 8
收起左侧

[已解决] Python大佬帮我看看这个HTML合并问题

[复制链接]
zoenbo 发表于 2021-5-7 11:26
本帖最后由 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 附件

[Python] 纯文本查看 复制代码
# -*- 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文件[1.html,2.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
你这些的啥垃圾代码 完全不按套路来

大佬见笑了,实际上这也不是我写的,以我的能力我连上面这段都写不出来。
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
最简单的方法 ! 获取的下标之后, 正则匹配出其他网页的内容  直接字符串切片拼接就好了

我这思路大概是有的,就是手不给力,写不出能解决的了的代码。
fanvalen 发表于 2021-5-7 20:39
[Python] 纯文本查看 复制代码
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[0]+'\n')
#最后写入body后缀
with open('new.htm','a+',encoding='utf-8')as f:
    f.write('  </body>\n</html>')
print('处理完成')

免费评分

参与人数 1吾爱币 +2 热心值 +1 收起 理由
zoenbo + 2 + 1 谢谢@Thanks!

查看全部评分

 楼主| zoenbo 发表于 2021-5-7 20:57
fanvalen 发表于 2021-5-7 20:39
[mw_shl_code=python,true]import re,os
#操作把子htm文件移动到当前add文件夹里(懒得去排除index,py,t ...

大佬,请收下我的膝盖~简直不要太完美!帅呆了~~
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-26 02:55

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表