Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

Python에서 HyperText Markup Language 지원?

<시간/>

Python에는 html.parser 모듈의 HTMLParser 클래스를 통해 HTML 파일을 처리하는 기능이 있습니다. HTML 태그의 위치와 태그의 다른 많은 속성을 감지할 수 있습니다. HTML 파일에 있는 데이터를 식별하고 가져올 수도 있는 기능이 있습니다.

아래 예제에서 HTMLParser 클래스를 사용하여 클래스에서 정의한 태그와 데이터만 처리할 수 있는 사용자 정의 파서 클래스를 만드는 방법을 봅니다. 여기에서 시작 태그, 종료 태그 및 데이터를 처리하고 있습니다.

다음은 파이썬 사용자 정의 파서에서 처리되는 html입니다.

예시

<html>
<br>
<head>
<br>
<title>welcome to Tutorials Point!</title>
<br>
</head>
<br>
<body>
<br>
<h1>Learn anything !</h1>
<br>
</body>
<br>
</html>

아래는 위의 파일을 파싱한 후 커스텀 파서에 따라 결과를 출력하는 프로그램입니다.

예시

from html.parser import HTMLParser
import io
class Custom_Parser(HTMLParser):
   def handle_starttag(self, tag, attrs):
      print("Line and Offset ==", HTMLParser.getpos(self))
      print("Encountered a start tag:", tag)


   def handle_endtag(self, tag):
      print("Line and Offset ==", HTMLParser.getpos(self))
      print("Encountered an end tag :", tag)


   def handle_data(self, data):
      print("Line and Offset ==", HTMLParser.getpos(self))
      print("Encountered some data :", data)

parser = Custom_Parser()

stream = io.open("E:\\test.html", "r")
parser.feed(stream.read())

출력

위의 코드를 실행하면 다음과 같은 결과가 나옵니다. -

Line and Offset == (1, 0)
Encountered a start tag: html
Line and Offset == (1, 6)
Encountered some data :

Line and Offset == (2, 0)
Encountered a start tag: head
Line and Offset == (2, 6)
Encountered some data :

Line and Offset == (3, 0)
Encountered a start tag: title
Line and Offset == (3, 7)
Encountered some data : welcome to Tutorials Point!
Line and Offset == (3, 34)
Encountered an end tag : title
Line and Offset == (3, 42)
Encountered some data :

Line and Offset == (4, 0)
Encountered an end tag : head
Line and Offset == (4, 7)
Encountered some data :

Line and Offset == (5, 0)
Encountered a start tag: body
Line and Offset == (5, 6)
Encountered some data :

Line and Offset == (6, 0)
Encountered a start tag: h1
Line and Offset == (6, 4)
Encountered some data : Learn anything !
Line and Offset == (6, 20)
Encountered an end tag : h1
Line and Offset == (6, 25)
Encountered some data :

Line and Offset == (7, 0)
Encountered an end tag : body
Line and Offset == (7, 7)
Encountered some data :

Line and Offset == (8, 0)
Encountered an end tag : html