python - 使用 html.parser (Python) 提取文本/解析文本

标签 python web-crawler html-parsing

我想从 html 文件中提取文本,特别是从 <p> 中提取文本。和<h1>标签。 我确实看到了 python 文档中关于这个主题的代码: 从 html.parser 导入 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()
parser.feed('<html><head><title>Test</title></head>'
            '<body><h1>Parse me!</h1></body></html>')

但我不知道如何从这里开始,以便仅提取某些标签内的文本(

和 。欢迎任何正确方向的提示和建议!(我不希望使用美丽的汤或任何外部库)

最佳答案

您可以使用此示例如何解析 <h1> 中的文本和<p>标签:

from html.parser import HTMLParser

class MyHTMLParser(HTMLParser):

    def __init__(self):
        super().__init__()
        self.data = []
        self.capture = False

    def handle_starttag(self, tag, attrs):
        if tag in ('p', 'h1'):
            self.capture = True

    def handle_endtag(self, tag):
        if tag in ('p', 'h1'):
            self.capture = False

    def handle_data(self, data):
        if self.capture:
            self.data.append(data)

parser = MyHTMLParser()
parser.feed('<html><head><title>Test</title></head>'
            '<body><h1>Parse me!</h1><p>This is P tag</p></body></html>')

print(parser.data)

打印:

['Parse me!', 'This is P tag']

关于python - 使用 html.parser (Python) 提取文本/解析文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64695883/

相关文章:

python - 存储 "if any("搜索的值

python - ZeroMQ Hello World 客户端 - 服务器。来自服务器的回复显然没有到达

elasticsearch - 爬虫+elasticsearch整合

r - 网页抓取(在 R 中?)

html - 可变顺序正则表达式语法

python - 装饰一个已经是类方法的方法?

python - 创建字典列表会生成同一字典的副本列表

c# - .net 4.0 中并行化网络爬虫的最佳实践

ruby-on-rails - Rails : How to write to a custom log file from within a rake task in production mode?

python - lxml - 如何获取元素的最小xpath?