首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更新MathJax CDN

更新MathJax CDN
EN

Stack Overflow用户
提问于 2017-04-02 03:46:06
回答 1查看 235关注 0票数 3

正如官方在on the MathJax websiteStackExchange's Meta上宣布的那样,MathJax将关闭其CDN。官方公告推荐了几种替代方案,包括使用替代CDN和自托管。对于一个引用了大量MathJax CDN的站点,完成此过程的最佳方式是什么?

例如,在我的小网站上,我可以使用以下MathJax命令计算指向unix CDN的文件数量:

代码语言:javascript
运行
复制
grep -rl 'cdn\.mathjax\.org/mathjax/latest/MathJax\.js' . | grep '\.html$' | wc -l

我发现我有382个这样的文件。最好的(最安全的)方法是什么?自动浏览这些文件并修改源代码,使其指向新的CDN,而不是旧的CDN?

注意:我可以使用Python遍历目录树,并很容易地进行搜索和替换。我对健壮的技术很感兴趣。实际上,我已经发布了一个使用BeautifulSoup查找和替换MathJax src链接的自我解答。这是我通常使用MathJax的方式,当然还有其他方式。

EN

回答 1

Stack Overflow用户

发布于 2017-04-02 03:46:48

这是我在Python中提出的第一种方法;不确定它的安全性或包容性。我首先编写一个名为update_mathjax的函数。这将使用BeautifulSoup查找<head>,然后搜索其src属性指向MathJax CDN的<script>。如果找到,它会用更新后的src替换src并重写该文件。

代码语言:javascript
运行
复制
from bs4 import BeautifulSoup as bs
old_cdn = 'https://cdn.mathjax.org/mathjax/latest/MathJax.js'
new_cdn = 'https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js'
def update_mathjax(filename):
    with open(filename, 'r+') as file_handle:
        file_contents = file_handle.read()
        soup = bs(file_contents, "html5lib")
        scripts = soup.find('head').find_all('script')
        for script in scripts:
            if script.attrs and 'src' in script.attrs:
                if script.attrs['src'][:49] == old_cdn:
                        q = script.attrs['src'][49:]
                        new_src = new_cdn + q
                        script.attrs['src'] = new_src
                        file_handle.seek(0)
                        file_handle.write(soup.prettify())
                        file_handle.truncate()
                        print('udated ' + filename)

这样,就可以很容易地遍历目录树并应用该函数。

代码语言:javascript
运行
复制
import os
for directory_name, subdirectory_list, filename_list in os.walk(os.getcwd()):
    for filename in filename_list:
        if filename[-5:] == ".html":
            update_mathjax(os.path.join(directory_name, filename))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43161254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档