使用 python 解析 HTML 文档

Parsing an HTML Document with python

我是 python 的新手,我正在尝试解析 HTML 文档以删除标签,我只想保留报纸上的标题和 body我之前在电脑上下载过的网站。

我正在使用我在文档中找到的 class 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”和很多行“”。但是当我尝试检查一行是否为空格时,它 returns false 即使两个变量出现在调试器上完全相同。

我不知道为什么会这样,但如果有人能帮我解析一下,那就太好了

根据您提供的代码,您似乎正在尝试打开您拥有的 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)

Python HTML 解析器要求提要是一个字符串。 您可以做的是将您拥有的整个 HTML 复制粘贴到 Feed 中。可能不是最佳实践,但它应该读取和解析 html

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

希望对您有所帮助

编辑————- 您是否尝试过将 html 放入字符串中,然后在字符串上调用 str.strip() 以删除字符串前导和尾随的所有空格。

仅供参考,您还可以使用 sentence.replace(“ “, “”) 从字符串

中删除所有空格

希望对您有所帮助