Hướng dẫn how to use html tags in python - cách sử dụng thẻ html trong python

Tôi có một lớp như thế này, tạo ra các siêu liên kết:

class getLink(obj):
    def __init__(self, text, url):
        self.text = self.Argument(text)
        self.url = self.Argument(url)
    def render(self, context):
        return "%s %s" % (html.link(self.text(context), self.url(context)))


def link(text, url):
    return mark_safe('%s' % (url, title))

Sau đó để có được một liên kết tôi làm như vậy:

getLink(text=_('Test'),fn.getUrl())

Kết quả HTML:

Test

Tôi muốn bọc liên kết bên trong

getLink(text=_('Test'),fn.getUrl())
3 và một liên kết khác bên trong thẻ
getLink(text=_('Test'),fn.getUrl())
4. Tôi đã cố gắng thêm các thẻ trực tiếp trong
getLink(text=_('Test'),fn.getUrl())
5 nhưng không hoạt động
getLink(text=_('Test'),fn.getUrl())
6. Tôi là người mới ở Python rất xin lỗi nếu tôi sai.

Cảm ơn bạn đã giúp đỡ!

Mã nguồn: lib/html/Parser.py Lib/html/parser.py


Mô-đun này xác định lớp

getLink(text=_('Test'),fn.getUrl())
7 đóng vai trò là cơ sở để phân tích các tệp văn bản được định dạng bằng HTML (Ngôn ngữ đánh dấu siêu văn bản) và XHTML.

classhtml.parser.htmlparser (*, convert_charrefs = true) ¶html.parser.HTMLParser(*, convert_charrefs=True)

Tạo một thể hiện phân tích cú pháp có thể phân tích đánh dấu không hợp lệ.

Nếu convert_charrefs là

getLink(text=_('Test'),fn.getUrl())
8 (mặc định), tất cả các tham chiếu ký tự (ngoại trừ các tài liệu trong ____ 19/________ 20 phần tử) sẽ tự động được chuyển đổi thành các ký tự Unicode tương ứng.

Một ví dụ

getLink(text=_('Test'),fn.getUrl())
7 được cho dữ liệu HTML và các phương thức xử lý gọi khi các thẻ bắt đầu, thẻ kết thúc, văn bản, nhận xét và các yếu tố đánh dấu khác gặp phải. Người dùng nên phân lớp
getLink(text=_('Test'),fn.getUrl())
7 và ghi đè các phương thức của mình để thực hiện hành vi mong muốn.

Trình phân tích cú pháp này không kiểm tra xem các thẻ kết thúc có khớp thẻ bắt đầu hay gọi trình xử lý thẻ cuối cho các phần tử được đóng hoàn toàn bằng cách đóng một phần tử bên ngoài.

Đã thay đổi trong phiên bản 3.4: Convert_charrefs đối số từ khóa được thêm vào.convert_charrefs keyword argument added.

Đã thay đổi trong phiên bản 3.5: Giá trị mặc định cho đối số Convert_charrefs hiện là

getLink(text=_('Test'),fn.getUrl())
8.The default value for argument convert_charrefs is now
getLink(text=_('Test'),fn.getUrl())
8.

Ví dụ Ứng dụng phân tích cú pháp HTML

Ví dụ cơ bản, dưới đây là trình phân tích cú pháp HTML đơn giản sử dụng lớp

getLink(text=_('Test'),fn.getUrl())
7 để in ra các thẻ bắt đầu, thẻ cuối và dữ liệu khi chúng gặp phải:

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('Test'
            '

Parse me!

'
)

Đầu ra sau đó sẽ là:

Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html

getLink(text=_('Test'),fn.getUrl())
7 Các trường hợp có các phương thức sau:

Htmlparser.feed (dữ liệu) ¶feed(data)

Cho ăn một số văn bản cho trình phân tích cú pháp. Nó được xử lý trong chừng mực vì nó bao gồm các yếu tố hoàn chỉnh; Dữ liệu không đầy đủ được đệm cho đến khi có nhiều dữ liệu được cung cấp hoặc

Test
7 được gọi. Dữ liệu phải là
Test
8.

Htmlparser.close ()close()

Xử lý lực của tất cả dữ liệu được đệm như thể nó được theo sau bởi một dấu cuối cùng. Phương pháp này có thể được xác định lại bởi một lớp dẫn xuất để xác định xử lý bổ sung ở cuối đầu vào, nhưng phiên bản được xác định lại phải luôn gọi phương pháp lớp cơ sở

getLink(text=_('Test'),fn.getUrl())
7
Test
7.

Htmlparser.reset ()reset()

Đặt lại trường hợp. Mất tất cả dữ liệu chưa qua xử lý. Điều này được gọi là ngầm vào thời điểm khởi tạo.

Htmlparser.getpos ()getpos()

Trả về số dòng hiện tại và bù.

Htmlparser.get_starttag_text () ¶get_starttag_text()

Trả về văn bản của thẻ bắt đầu được mở gần đây nhất. Điều này thường không cần thiết để xử lý có cấu trúc, nhưng có thể hữu ích trong việc xử lý HTML, khi được triển khai hoặc để tạo lại đầu vào với những thay đổi tối thiểu (có thể bảo tồn được khoảng trắng giữa các thuộc tính, v.v.).

Các phương pháp sau được gọi là khi các phần tử dữ liệu hoặc đánh dấu gặp phải và chúng có nghĩa là được ghi đè trong một lớp con. Việc triển khai lớp cơ sở không làm gì cả (ngoại trừ

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('Test'
            '

Parse me!

'
)
1):

Htmlparser.handle_starttag (tag, attrs) ¶handle_starttag(tag, attrs)

Phương thức này được gọi để xử lý thẻ bắt đầu của một phần tử (ví dụ:

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('Test'
            '

Parse me!

'
)
2).

Đối số thẻ là tên của thẻ được chuyển đổi thành chữ thường. Đối số attrs là danh sách các cặp

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('Test'
            '

Parse me!

'
)
3 chứa các thuộc tính được tìm thấy bên trong dấu ngoặc ____ ____34. Tên sẽ được dịch thành chữ thường và trích dẫn trong giá trị đã được xóa, và các tài liệu tham khảo ký tự và thực thể đã được thay thế.

Chẳng hạn, đối với thẻ

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('Test'
            '

Parse me!

'
)
5, phương pháp này sẽ được gọi là
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('Test'
            '

Parse me!

'
)
6.

Tất cả các tham chiếu thực thể từ

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('Test'
            '

Parse me!

'
)
7 được thay thế trong các giá trị thuộc tính.

Htmlparser.handle_endtag (tag) ¶handle_endtag(tag)

Phương thức này được gọi để xử lý thẻ cuối của một phần tử (ví dụ:

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('Test'
            '

Parse me!

'
)
8).

Đối số thẻ là tên của thẻ được chuyển đổi thành chữ thường.

Htmlparser.handle_startendtag (tag, attrs) ¶handle_startendtag(tag, attrs)

Tương tự như

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('Test'
            '

Parse me!

'
)
9, nhưng được gọi khi trình phân tích cú pháp gặp một thẻ trống kiểu XHTML (
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
0). Phương pháp này có thể được ghi đè bởi các lớp con yêu cầu thông tin từ vựng cụ thể này; Việc triển khai mặc định chỉ đơn giản gọi
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('Test'
            '

Parse me!

'
)
9 và
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
2.

Htmlparser.handle_data (dữ liệu) ¶handle_data(data)

Phương pháp này được gọi để xử lý dữ liệu tùy ý (ví dụ: các nút văn bản và nội dung của

Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
3 và
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
4).

Htmlparser.handle_entityref (tên) ¶handle_entityref(name)

Phương pháp này được gọi để xử lý một tham chiếu ký tự được đặt tên của mẫu

Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
5 (ví dụ:
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
6), trong đó tên là một tham chiếu thực thể chung (ví dụ:
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
7). Phương pháp này không bao giờ được gọi là nếu convert_charrefs là
getLink(text=_('Test'),fn.getUrl())
8.

Htmlparser.handle_charref (tên) ¶handle_charref(name)

Phương pháp này được gọi là xử lý các tham chiếu ký tự số thập phân và thập lục phân của mẫu

Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
9 và
from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
0. Ví dụ, tương đương thập phân cho
Encountered a start tag: html
Encountered a start tag: head
Encountered a start tag: title
Encountered some data  : Test
Encountered an end tag : title
Encountered an end tag : head
Encountered a start tag: body
Encountered a start tag: h2
Encountered some data  : Parse me!
Encountered an end tag : h2
Encountered an end tag : body
Encountered an end tag : html
6 là
from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
2, trong khi thập lục phân là
from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
3; Trong trường hợp này, phương thức sẽ nhận được
from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
4 hoặc
from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
5. Phương pháp này không bao giờ được gọi là nếu convert_charrefs là
getLink(text=_('Test'),fn.getUrl())
8.

Htmlparser.handle_comment (dữ liệu) ¶handle_comment(data)

Phương pháp này được gọi là khi gặp bình luận (ví dụ:

from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
7).

Ví dụ, nhận xét

from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
8 sẽ khiến phương thức này được gọi với đối số
from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()
9.

Nội dung của Internet Explorer Nhận xét có điều kiện (Condcoms) cũng sẽ được gửi đến phương thức này, vì vậy, đối với

>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
0, phương thức này sẽ nhận được
>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
1.

Htmlparser.handle_decl (khai báo) ¶handle_decl(decl)

Phương pháp này được gọi để xử lý khai báo HTML DocType (ví dụ:

>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
2).

Tham số DEC sẽ là toàn bộ nội dung của khai báo bên trong đánh dấu

>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
3 (ví dụ:
>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
4).

Htmlparser.handle_pi (dữ liệu) ¶handle_pi(data)

Phương thức được gọi khi gặp phải hướng dẫn xử lý. Tham số dữ liệu sẽ chứa toàn bộ hướng dẫn xử lý. Ví dụ, đối với hướng dẫn xử lý

>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
5, phương pháp này sẽ được gọi là
>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
6. Nó được dự định sẽ được ghi đè bởi một lớp dẫn xuất; Việc thực hiện lớp cơ sở không làm gì cả.

Ghi chú

Lớp

getLink(text=_('Test'),fn.getUrl())
7 sử dụng các quy tắc cú pháp SGML để xử lý hướng dẫn. Một hướng dẫn xử lý XHTML bằng cách sử dụng Trailing
>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
8 sẽ khiến
>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"
8 được đưa vào dữ liệu.

Htmlparser.unknown_decl (dữ liệu) ¶unknown_decl(data)

Phương pháp này được gọi là khi một tuyên bố không được công nhận được đọc bởi trình phân tích cú pháp.

Tham số dữ liệu sẽ là toàn bộ nội dung của khai báo bên trong đánh dấu

>>> parser.feed('
Hướng dẫn how to use html tags in python - cách sử dụng thẻ html trong python
'
) Start tag: img attr: ('src', 'python-logo.png') attr: ('alt', 'The Python logo') >>> >>> parser.feed('

Python

'
) Start tag: h2 Data : Python End tag : h2
0. Đôi khi rất hữu ích khi được ghi đè bởi một lớp dẫn xuất. Việc thực hiện lớp cơ sở không làm gì cả.

Ví dụ;

Lớp sau đây thực hiện trình phân tích cú pháp sẽ được sử dụng để minh họa thêm các ví dụ:

from html.parser import HTMLParser
from html.entities import name2codepoint

class MyHTMLParser(HTMLParser):
    def handle_starttag(self, tag, attrs):
        print("Start tag:", tag)
        for attr in attrs:
            print("     attr:", attr)

    def handle_endtag(self, tag):
        print("End tag  :", tag)

    def handle_data(self, data):
        print("Data     :", data)

    def handle_comment(self, data):
        print("Comment  :", data)

    def handle_entityref(self, name):
        c = chr(name2codepoint[name])
        print("Named ent:", c)

    def handle_charref(self, name):
        if name.startswith('x'):
            c = chr(int(name[1:], 16))
        else:
            c = chr(int(name))
        print("Num ent  :", c)

    def handle_decl(self, data):
        print("Decl     :", data)

parser = MyHTMLParser()

Phân tích cú pháp do DocType:

>>> parser.feed('
...             '"http://www.w3.org/TR/html4/strict.dtd">')
Decl     : DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"

Phân tích một phần tử với một vài thuộc tính và một tiêu đề:

>>> parser.feed('
Hướng dẫn how to use html tags in python - cách sử dụng thẻ html trong python
'
) Start tag: img attr: ('src', 'python-logo.png') attr: ('alt', 'The Python logo') >>> >>> parser.feed('

Python

'
) Start tag: h2 Data : Python End tag : h2

Nội dung của các yếu tố

getLink(text=_('Test'),fn.getUrl())
9 và
Test
0 được trả về, mà không cần phân tích cú pháp thêm:

>>> parser.feed('')
Start tag: style
     attr: ('type', 'text/css')
Data     : #python { color: green }
End tag  : style

>>> parser.feed('')
Start tag: script
     attr: ('type', 'text/javascript')
Data     : alert("hello!");
End tag  : script

Nhận xét phân tích cú pháp:

>>> parser.feed(''
...             '')
Comment  :  a comment
Comment  : [if IE 9]>IE-specific content

Phân tích phân tích các tham chiếu ký tự được đặt tên và số và chuyển đổi chúng sang chính xác (lưu ý: 3 tài liệu tham khảo này đều tương đương với

>>> parser.feed('
Hướng dẫn how to use html tags in python - cách sử dụng thẻ html trong python
'
) Start tag: img attr: ('src', 'python-logo.png') attr: ('alt', 'The Python logo') >>> >>> parser.feed('

Python

'
) Start tag: h2 Data : Python End tag : h2
3):

getLink(text=_('Test'),fn.getUrl())
0

Cho ăn các khối không đầy đủ cho

>>> parser.feed('
Hướng dẫn how to use html tags in python - cách sử dụng thẻ html trong python
'
) Start tag: img attr: ('src', 'python-logo.png') attr: ('alt', 'The Python logo') >>> >>> parser.feed('

Python

'
) Start tag: h2 Data : Python End tag : h2
4 hoạt động, nhưng
>>> parser.feed('
Hướng dẫn how to use html tags in python - cách sử dụng thẻ html trong python
'
) Start tag: img attr: ('src', 'python-logo.png') attr: ('alt', 'The Python logo') >>> >>> parser.feed('

Python

'
) Start tag: h2 Data : Python End tag : h2
5 có thể được gọi nhiều lần (trừ khi convert_charrefs được đặt thành
getLink(text=_('Test'),fn.getUrl())
8):

getLink(text=_('Test'),fn.getUrl())
1

Phân tích cú pháp HTML không hợp lệ (ví dụ: các thuộc tính chưa được trích xuất) cũng hoạt động:

getLink(text=_('Test'),fn.getUrl())
2

Làm thế nào để bạn gắn thẻ html trong python?

Python: Tạo chuỗi HTML với các thẻ xung quanh (các) từ..
Giải pháp mẫu:-.
Mã Python: def add_tags (tag, word): trả về " % s" % (tag, word, tag) in (add_tags ('i', 'python')) ) ...
Flowchart:.
Trình chỉnh sửa mã Python: ....
Có một cách khác để giải quyết giải pháp này ?.

Tôi có thể kết nối HTML với Python không?

Với Python, bạn cũng có thể truy cập và truy xuất dữ liệu từ Internet như XML, HTML, JSON, v.v. Bạn cũng có thể sử dụng Python để làm việc trực tiếp với dữ liệu này.. You can also use Python to work with this data directly.

Làm cách nào để kết hợp HTML và Python?

Làm thế nào để kết hợp mã HTML và Python ?..
+1.Hãy nhìn vào Brython quá.....
Bạn có thể bắt đầu bằng cách sử dụng Flask Framework.Bạn có thể kết xuất hoặc viết HTML như một phản hồi của điểm cuối tuyến đường đơn giản.....
Bạn cũng có thể sử dụng khung Django của Python được sử dụng để phát triển web, mà bạn có thể sử dụng mã HTML ..

Làm cách nào để đặt HTML vào chuỗi Python?

Đối với các đoạn ngắn của HTML, hãy bắt đầu dòng với các trích dẫn, không có câu lệnh in: HIP sẽ thêm câu lệnh cho bạn khi thực hiện.Nhập hệ điều hành hiện tạiDir = OS.GetCwd () "Thư mục hiện tại là"+currentDir+"".
Đối với các khối dài hơn, hãy sử dụng cú pháp chuỗi đa dòng Python với ba trích dẫn kép:.