在HTML文件中搜索特定的关键字后,如何找到封闭标签(开始和结束标签)?

时间:2019-07-01 07:08:28

标签: html python-3.x beautifulsoup

我有一个需要在网站上搜索的关键字列表。我首先使用BeautifulSoup提取了网页的内容,并将其存储在文本文件中。我希望在文本文件(包含HTML数据)中搜索关键字列表,当其中一个关键字匹配时,需要提取找到该关键字的相应开始和结束标签。
例如-

<div class="col-md-6">
<a href="/"><img alt="DC Sustainable Energy Utility: Your Guide to Green" class="img-fluid" src="//d2z33q8cpwfp3p.cloudfront.net/content/dcseu-temp.png"/></a>
</div>

我搜索“ Energy”一词,然后在“ img”标签中找到它,但我希望提取父标签,这里是“ div”。 有办法吗?

from bs4 import BeautifulSoup
import urllib

#Extracting HTML content from a webpage

webUrl = urllib.request.urlopen("URL")
html_doc = webUrl.read()
soup = BeautifulSoup(html_doc, 'html.parser')
soup = str(soup)
with open('path to .txt file', 'w') as output:
    output.write(soup)

#Extracting start and end tag
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()
parser.feed('<div class="col-md-6"><a href="/"><img alt="Some Energy Utility: " class="img-fluid" src="//some_image.png"/></a></div>')

这标识了所有的开始和结束标签,但我希望能够提取包含关键字的父/主标签。

1 个答案:

答案 0 :(得分:0)

您可以使用自定义过滤器查找具有特定文本的元素或具有特定img文本的alt,然后找到类型为div(或任何其他条件{ {1}}个方法接受)

.find_*