繁体   English   中英

用python解析HTML文档

[英]Parsing an HTML Document with python

我对python完全陌生,我试图解析HTML文档以删除标签,而我只是想保留以前从我的计算机上下载过的报纸网站的标题和正文。

我正在使用在文档中找到的HTML解析器类,但是我不知道如何很好地使用它,我不太了解这种语言:(

这是我的代码:

#importa la clase HTMLParser
from html.parser import HTMLParser

class HTMLCleaner(HTMLParser):
    container = ""

    def handle_data(self, data):
        if (data == '\n'):
            pass
        elif (data == " "):
            pass
        else:
            self.container += data

        return self.container

parser = HTMLCleaner()

#se va a abrir un fichero para parsearlo
archivo = open("C://Users//jotab//OneDrive//Documentos//Git//SRI//SRI_PR0//coleccionESuja2019//es_26142.html", "r", encoding="utf8")


while True:
    line = archivo.readline()
    if line == "":
        break
    else:
        parser.feed(line)

print(parser.container)

之所以这样做,是因为解析后得到了很多行“ \\ n”和很多行“”。 但是,当我尝试检查某行是否为空格时,即使两个变量在调试器上的显示完全相同,它也会返回false。

我不知道为什么会这样,但是如果some1可以帮助我解析它,那就太好了

根据您提供的代码,您似乎正在尝试打开一个HTML文件。

而不是像您那样逐行解析html文件。 只需将整个HTML文件输入解析器即可。

from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Encountered a start tag:", tag)

    def handle_endtag(self, tag):
        print("Encountered an end tag :", tag)

    def handle_data(self, data):
        print("Encountered some data  :", data)

parser = MyHTMLParser()

with open(r'C:\Users\...site_1.html', "r") as f:
    page = f.read()
    tree = html.fromstring(page)
parser.feed(tree)

Pythons HTML解析器要求提要是一个字符串。 您可以做的就是将您拥有的整个HTML复制粘贴到Feed中。 可能不是最佳做法,但应阅读并解析html

parser.feed("THE ENTIRE HTML AS STRING HERE")

我希望这有帮助

编辑----您是否尝试过将html放入一个字符串中,然后在该字符串上调用str.strip()来删除该字符串str.strip()和结尾的所有空格。

仅供参考,您还可以使用sentence.replace(“ “, “”) .replace sentence.replace(“ “, “”)从字符串中删除所有空格

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM