【问题标题】:HTML Editing in PythonPython中的HTML编辑
【发布时间】:2019-11-08 19:21:54
【问题描述】:

我正在编写一个代码来翻译 HTML 中的字符串。

更具体地说,我的目标是执行字符串替换。步骤是:文件解析,识别行中的字符串(如果有的话),最后用它的翻译版本替换这个字符串,取自字典。

我得到了宝贵的帮助 here,关于每行的 html 解析和字符串替换。

以txt形式打开html文件,逐行扫过,我举了一个例子here

利用这两个示例中的知识,我编写了以下代码:

from bs4 import BeautifulSoup
from bs4 import SoupStrainer
from html_dictionary import port_eng

def str_replace_port_eng(file_name, tag_name):

with open(file_name, 'rb') as src:
    doc = src.read()
    soup = BeautifulSoup(doc, 'html.parser')
    src.close()

only_tag_name = soup.find_all(str(tag_name))

with open("new_file.html", "w") as outf:
    for line in soup:
        for html_line in range(len(only_tag_name)):
            pt_word = str(only_tag_name[html_line].text).strip()
            pt_word = pt_word.strip('+')
            pt_word = pt_word.strip(' ')

            if pt_word != "":
                en_word = port_eng[pt_word]
                new_line = (str(only_tag_name[html_line]).replace(pt_word, en_word))
                outf.writelines(new_line)
            else:
                en_word = pt_word
                new_line = (str(only_tag_name[html_line]).replace(pt_word, en_word))
                outf.writelines(new_line)

newpg = str_replace_port_eng("input_test.html", "a")

输入文件(示例):

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--[if lt IE 7 ]> <html class="ie6" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie9" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html xmlns="http://www.w3.org/1999/xhtml"> <!--<![endif]-->

<body>

	<div style="padding-top:0px;height:100%;" id="wrap">
	
		<div style="padding-bottom:0px;" id="header" class="ie-dropdown-fix">
		
		<!-- /// HEADER  //////////////////////////////////////////////////////////////////////////////////////////////////////////// -->

			<div style="margin-left:10px;" class="row">
				<div class="span3">
				
					<!-- // Logo // 
					<a href="index.html" id="logo"><img src="_layout/images/logo.png" alt="" class="responsive-img" /></a>
					-->
					
				</div><!-- end .span3 -->
				<div  style="color:#00233C;width:1100px;background-color:#FFFFFF;margin-right:0px" class="span6">
				
					<!-- // Dropdown Menu // -->
					<ul style="color:#00233C;margin-left:10px;width:1100px;" id="dropdown-menu" class="fixed">
						<li class="current"><a  style="color:#00233C;" href="..."><i class="icon icon-home"></i>  Início</a></li>
						<li><a  style="color:#00233C;margin-left:10px;" href="#"><i class="icon icon-question-sign"></i>  Ajuda <small class="mute">+</small></a>
							<ul class="sub-menu">
								<li><a href="#">FAQ <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Classificação da Informação</a></li>	
										<li><a href="..." target="_blank">Reúso de Ativos Digitais</a></li>												
										<li><a href="..." target="_blank">Biblioteca</a></li>
									</ul>
								</li>							
								<li><a href="#">Alerta <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Criar Alerta</a></li>	
										<li><a href="..." target="_blank">Criar Alerta Múltiplo</a></li>												
									</ul>
								</li>
								<li><a href="..." target="_blank">Aviso ou Notícia</a></li>
								<li><a href="#">Busca <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Busca Simples</a></li>
										<li><a href="..." target="_blank">Busca Avançada</a></li>									
									</ul>
								</li>
								<li><a href="#">Documentos <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Carregar Novo Documento</a></li>
										<li><a href="..." target="_blank">Editar Documento</a></li>													
									</ul>
								</li>
		</div>
	</div>
</body>
</html>

预期输出:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!--[if lt IE 7 ]> <html class="ie6" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if IE 7 ]>    <html class="ie7" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if IE 8 ]>    <html class="ie8" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if IE 9 ]>    <html class="ie9" xmlns="http://www.w3.org/1999/xhtml"> <![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--> <html xmlns="http://www.w3.org/1999/xhtml"> <!--<![endif]-->
    <body>

	<div style="padding-top:0px;height:100%;" id="wrap">
	
		<div style="padding-bottom:0px;" id="header" class="ie-dropdown-fix">
		
		<!-- /// HEADER  //////////////////////////////////////////////////////////////////////////////////////////////////////////// -->

			<div style="margin-left:10px;" class="row">
				<div class="span3">
				
					<!-- // Logo // 
					<a href="index.html" id="logo"><img src="_layout/images/logo.png" alt="" class="responsive-img" /></a>
					-->
					
				</div><!-- end .span3 -->
				<div  style="color:#00233C;width:1100px;background-color:#FFFFFF;margin-right:0px" class="span6">
				
					<!-- // Dropdown Menu // -->
					<ul style="color:#00233C;margin-left:10px;width:1100px;" id="dropdown-menu" class="fixed">
						<li class="current"><a  style="color:#00233C;" href="..."><i class="icon icon-home"></i>  Start</a></li>
						<li><a  style="color:#00233C;margin-left:10px;" href="#"><i class="icon icon-question-sign"></i>  Help <small class="mute">+</small></a>
							<ul class="sub-menu">
								<li><a href="#">FAQ <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Information Security</a></li>	
										<li><a href="..." target="_blank">Digital Asset Reuse</a></li>												
										<li><a href="..." target="_blank">Library</a></li>
									</ul>
								</li>							
								<li><a href="#">Alerta <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Create Alert</a></li>	
										<li><a href="..." target="_blank">Create Multiple Alert</a></li>												
									</ul>
								</li>
								<li><a href="..." target="_blank">News</a></li>
								<li><a href="#">Busca <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Simple Search</a></li>
										<li><a href="..." target="_blank">Advanced Search</a></li>									
									</ul>
								</li>
								<li><a href="#">Documents <small class="mute">+</small></a>
									<ul>
										<li><a href="..." target="_blank">Load New Document</a></li>
										<li><a href="..." target="_blank">Edit Document</a></li>													
									</ul>
								</li>
		</div>
	</div>
</body>
</html>

实际输出:

&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;&lt;a href="..." style="color:#00233C;"&gt;&lt;i class="icon icon-home"&gt;&lt;/i&gt;  Home&lt;/a&gt;&lt;a href="#" style="color:#00233C;margin-left:10px;"&gt;&lt;i class="icon icon-question-sign"&gt;&lt;/i&gt;  Help &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="#"&gt;FAQ &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Information Security&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Reuse of Digital Assets&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Library&lt;/a&gt;&lt;a href="#"&gt;Alert &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Create Multiple Alert&lt;/a&gt;&lt;a href="..." target="_blank"&gt;News&lt;/a&gt;&lt;a href="#"&gt;Search &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Simple Search&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Advanced Search&lt;/a&gt;&lt;a href="#"&gt;Documents &lt;small class="mute"&gt;+&lt;/small&gt;&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Load New Document&lt;/a&gt;&lt;a href="..." target="_blank"&gt;Edit Document&lt;/a&gt;

现在我正在寻找代码中的错误,以及如何修复它。

提前致谢,

蒂亚戈

【问题讨论】:

  • with open(file_name, 'rb') as src: 下的循环遍历所有您感兴趣的文件。但是,在该循环结束后,您将只得到最后一个文件的 soup。这是故意的吗?因为,如果不是,那么您可能希望将其余代码置于该循环之下。
  • @Argon 感谢您的评论。我没有注意到帖子中看到的循环只会返回soupobj。从代码中删除第一个 for 后,我看到了这个错误;结果是翻译后的字符串为一行。
  • 为了能够搜索字符串,我从 html 中得到一个 soup obj 并对其进行迭代。最后,我需要整个 html,只是替换了字符串。代码给出的输出文件从带有替换字符串的第一行开始,在它之前的那些行后面。有没有办法遍历所有的 html 并替换字符串?我的意思是,不要迭代 soup 而是编辑它,使用 html 的(比方说)行作为参考?

标签: python html parsing beautifulsoup


【解决方案1】:

我找到的最佳解决方案是从.html 文件中复制内容,将其粘贴到.py 文件中,然后从那里开始编辑工作。

from bs4 import BeautifulSoup
from html_dictionary import port_eng    # Dictionary
from html_input_file import raw_text    # Input file: .py file with string
                                        # defined by triple quotes (""" """)

rtx = list(raw_text.split('\n'))
ans_list = []                           # List of lines with replaced string
off_list = []                           # List of items not found in dictionary, and index of occurrence

for raw_line in rtx:
    soup = BeautifulSoup(raw_line, "lxml")
    tag_cont = soup.text                # tag content
    tag_cont = tag_cont.strip('+')
    tag_cont = tag_cont.strip(' ')

    if tag_cont in port_eng.keys():
        en_word = port_eng[tag_cont]
        new_item = str(raw_line).replace(tag_cont, en_word)

    else:l
        en_word = tag_cont
        new_item = str(raw_line).replace(tag_cont, en_word)
        if tag_cont not in off_list:    
            off_list.append(tuple([tag_cont, rtx.index(raw_line)]))

    ans_list.append(new_item)

return ans_list, off_list

我通过print() 直接从屏幕获取输出,并将其复制到一个新的.html 文件中——这确实不是最优雅的解决方案,但确实有效。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-02
    • 1970-01-01
    • 2019-09-08
    相关资源
    最近更新 更多