杨__羊羊
这是我最终得到的处理代码。使用一些 CSS + javascript 隐藏和切换逻辑,它会像 google docs 文档一样工作。如果有人用 css 或 js 更新这个答案,我将不胜感激。import requestsfrom bs4 import BeautifulSoupdef render_gist_by_file(gist_id): result = requests.get(f'https://gist.github.com/{gist_id}.js', headers=git_credential) if result.text.startswith("<!DOCTYPE html>"): return None result = result.text result = result.replace("\\/", "/").replace("\\&", "&").replace("\\$", "$").replace("\\<", "<").replace("\\`", "`").replace("\\n", "\n").replace('\\"', '"') result = html.unescape(result) result = result.split("document.write('")[-1][:-3] bs = BeautifulSoup(result, "html.parser") for tag in bs.find_all(class_="gist"): file_box = tag.find(class_="file-box") root = tag.find(class_="file-box") toggle_div = bs.new_tag('div', attrs={"class": "gist-meta"}) for i, d in enumerate(tag.find_all(class_="file")): d["class"] = f"file gist-toggle gist-id-{gist_id}" if i != 0: file_box.append(d) # combine to first table for d in tag.find_all(class_="gist-meta"): siblings = list(d.next_elements) file_id, file_name = siblings[4].attrs["href"].split("#")[-1], siblings[5] gist.file_names.append(file_name) toggle_a = bs.new_tag('a', attrs={"id": file_id, "class": f"gist-toggle gist-id-{gist_id}", "onclick": f"toggle('gist-id-{gist_id}', '{file_id}')", "style": "padding: 0 18px"}) toggle_a.append(file_name) toggle_div.append(toggle_a) d.extract() # remove bottom nav root.insert(0, toggle_div) for d in islice(tag.find_all(class_="gist-file"), 1, None): d.extract() # remove except first gist.html = str(bs) return gist