当前位置: 首页 > news >正文

一种整理HTML和JS代码的方法

tidy可以整理HTML但不动里面的JS代码。prettier可以整理JS代码,它能不能整理HTML+JS呢?

我写完两个程序后才发现原来可以啊。不过还是把破程序贴出来吧,再说也许发现了prettier的一个bug.

get-js.py

from bs4 import BeautifulSoup as BS
import sysbs = BS(open(sys.argv[1], 'r'), 'html.parser')
n = 0
for t in bs.find_all('script'):s = t.stringif s is None: continuewith open(f'{n:02d}.js', 'w') as f:print(s, file=f, end='')n += 1
View Code

rm-js.py

from html.parser import HTMLParser
import sysclass ScriptRemover (HTMLParser):T = 'script'def __init__(m):super().__init__(); m.in_script = False@staticmethoddef ta(t, a):s = '<' + tif len(a): s += ' ' + ' '.join(f'{k}="{v}"' for k,v in a)return sdef handle_starttag(m, t, a):print(f'{m.ta(t,a)}>', end='')if t.lower() == m.T: m.in_script = Truedef handle_endtag(m, t):print(f'</{t}>', end='')if t.lower() == m.T: m.in_script = Falsedef handle_data(m, data):if not m.in_script: print(data, end='')def handle_startendtag(m, t, a): print(f'{m.ta(t,a)}/>', end='')ScriptRemover().feed(sys.stdin.read())
View Code

JS里裸放个JSON,prettier说语法错误。该JSON用别的工具们验证没问题,改成形如x={"age":0},prettier也不报错了。

# apt install tidy

# man tidy; -w 代表width

# apt install nodejs npm
# npm install -g prettier -g表示global,为所有用户安装

# 没有manual, -h -c --check -w --write

浏览器不会把&lt;script&gt;作为script对待,而是作为普通文本显示<script>

BeautifulSoup(), param features: Desirable features of the parser to be used. This may be the name of a specific parser ("lxml", "lxml-xml", "html.parser", or "html5lib") or it may be the type of markup to be used ("html", "html5", "xml"), 实测"html"不行,"html.parser"可以。

BeautifulSoup.find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs),看见有人写find_all(True),不知何意。

试了下:

def find_all(self, name=None, attrs={}, recursive=True, string=None, limit=None, **kwargs):print(f'name={name}, attrs={attrs}')
find_all(1, True)name=True, attrs={}

'' == True是False. '' == False也是False

自定义类重载了__eq__时,使用==判断None会出错。{} '' 0都是False.

 

http://www.zskr.cn/news/19120.html

相关文章:

  • 元推理框架,是人类文明的《神农本草经》,源于自指自洽的觉悟与洗礼
  • 【程序员必看】MySQL数据类型全解析:选错类型性能直接掉80%!
  • 2025环氧地坪漆厂家推荐:常州新禾,品质保证施工无忧!
  • 2025家居ERP推荐:赛思软件助力企业高效管理!
  • 2025彩钢瓦保养优质厂家推荐,江苏承优建筑工程专业服务!
  • 2025磁力泵加工厂推荐中正化工,专业定制高效耐用产品!
  • 2025双氧水供应厂家推荐:苏州市岚昱化工品质卓越选择!
  • 2025上海保洁公司最新推荐榜:高效清洁与贴心服务的优质选择
  • 2025书包柜定做厂家推荐:杰尚家具专业定制,品质卓越!
  • 打不动十个
  • 2025拉伸器厂家最新推荐榜:专业制造与优质服务的行业佼佼者
  • 2025氧化镁供应厂家推荐:松辽镁业高纯度优质选择!
  • 2025硅藻土订制厂家口碑推荐:品质卓越与专业服务的双重保障
  • 2025数控滚齿机订做厂家推荐:吉莱特智能装备,精准高效品质
  • Agno - 轻量级Python多智能体系统框架
  • P10960 SUBSTRACT 个人题解
  • 2025新型千斤顶厂家推荐:柳州市联桥科技,品质卓越服务到位
  • 2025年PP鱼池优质厂家推荐:超众渔业机械,环保耐用首选!
  • 完整教程:MongoDB Ops Manager部署
  • 2025医疗器械微弧氧化优质厂家推荐,华源漆业技术领先服务到
  • 【网络协议】SSL与TLS的关系 - 教程
  • 2025年安全光栅厂家最新推荐榜:精准防护与高效性能的工业首
  • 2025七水硫酸锌实力厂家推荐:安通环保科技,品质卓越信赖之
  • 2025磁力泵厂家最新推荐榜:高效稳定与优质服务的首选指南
  • 2025智能防爆灯厂家最新推荐榜:安全高效与技术创新典范
  • 2025氢氧化镁供应厂家推荐:辽宁润辉新材料科技优质厂家首选
  • 2025黄金回收品牌最新推荐榜:高信誉与专业服务的首选厂家!
  • 「Java EE制作指南」用MyEclipse创建的EJB开发工具(一)
  • 中考_学科
  • 工具篇-Cursor中接入DeepSeek,只要这三步