Hướng dẫn extract html tags python - trích xuất các thẻ html python

Dưới đây là phiên bản câu trả lời của Xperroni hoàn chỉnh hơn một chút. Nó bỏ qua các phần tập lệnh và kiểu dáng và dịch charrefs (ví dụ: ') và các thực thể HTML (ví dụ: & amp;).

Show

    Nó cũng bao gồm một bộ chuyển đổi nghịch đảo đồng bằng sang HTML tầm thường.

    """
    HTML <-> text conversions.
    """
    from HTMLParser import HTMLParser, HTMLParseError
    from htmlentitydefs import name2codepoint
    import re
    
    class _HTMLToText(HTMLParser):
        def __init__(self):
            HTMLParser.__init__(self)
            self._buf = []
            self.hide_output = False
    
        def handle_starttag(self, tag, attrs):
            if tag in ('p', 'br') and not self.hide_output:
                self._buf.append('\n')
            elif tag in ('script', 'style'):
                self.hide_output = True
    
        def handle_startendtag(self, tag, attrs):
            if tag == 'br':
                self._buf.append('\n')
    
        def handle_endtag(self, tag):
            if tag == 'p':
                self._buf.append('\n')
            elif tag in ('script', 'style'):
                self.hide_output = False
    
        def handle_data(self, text):
            if text and not self.hide_output:
                self._buf.append(re.sub(r'\s+', ' ', text))
    
        def handle_entityref(self, name):
            if name in name2codepoint and not self.hide_output:
                c = unichr(name2codepoint[name])
                self._buf.append(c)
    
        def handle_charref(self, name):
            if not self.hide_output:
                n = int(name[1:], 16) if name.startswith('x') else int(name)
                self._buf.append(unichr(n))
    
        def get_text(self):
            return re.sub(r' +', ' ', ''.join(self._buf))
    
    def html_to_text(html):
        """
        Given a piece of HTML, return the plain text it contains.
        This handles entities and char refs, but not javascript and stylesheets.
        """
        parser = _HTMLToText()
        try:
            parser.feed(html)
            parser.close()
        except HTMLParseError:
            pass
        return parser.get_text()
    
    def text_to_html(text):
        """
        Convert the given text to html, wrapping what looks like URLs with  tags,
        converting newlines to 
    tags and converting confusing chars into html entities. """ def f(mo): t = mo.group() if len(t) == 1: return {'&':'&', "'":''', '"':'"', '<':'<', '>':'>'}.get(t) return '
    %s' % (t, t) return re.sub(r'https?://[^] ()"\';]+|[&\'"<>]', f, text)

    Ví dụ 2:

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    

    Ví dụ 3:

    Data
    
    5
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    Data
    
    7
    >>> import lxml.html
    >>> root = lxml.html.fromstring('Data')
    >>> [font.text for font in root.cssselect('font.big')]
    ['Data']
    
    9
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    div
    1
    Data
    
    4

    Data
    

    Tôi là người mới đến Python. Đây là mã của tôi hoạt động trên Python 2.7.5

    Nhận được đánh dấu HTML như thế và nó hoạt động.Sep 6, 2013 at 11:38

    1

    Những gì tôi muốn làm là, để có được giá trị từ thẻ . cho người yêu cũ. Tôi cần giá trị dữ liệu từ ví dụ này:

    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    

    Làm thế nào để làm nó?

    Đã hỏi ngày 6 tháng 9 năm 2013 lúc 11:38Sep 6, 2013 at 11:39

    Bạn có thể sử dụng mô -đun phân tích cú pháp HTML như

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    0:TerryA

    Điều này tìm thấy một thẻ

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    1 với
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    2. Sau đó, nó in nội dung của nó.11 gold badges117 silver badges137 bronze badges

    2

    Đã trả lời ngày 6 tháng 9 năm 2013 lúc 11:39

    import urllib2
    import lxml.html
    
    url ="mydomain.com"
    
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    for font in lxml.html.fromstring(data).cssselect('font.big'):
        print font.text
    

    >>> import lxml.html
    >>> root = lxml.html.fromstring('Data')
    >>> [font.text for font in root.cssselect('font.big')]
    ['Data']
    

    TerryaterryaSep 6, 2013 at 11:40

    56.9K11 Huy hiệu vàng117 Huy hiệu bạc137 Huy hiệu đồngfalsetru

    Sử dụng

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    3:57 gold badges683 silver badges606 bronze badges

    Đã trả lời ngày 6 tháng 9 năm 2013 lúc 11:40

    Falsetrufalsetru

    343K57 Huy hiệu vàng683 Huy hiệu bạc606 Huy hiệu Đồng

  • Xem thảo luận
  • Cải thiện bài viết
  • Đã trả lời ngày 6 tháng 9 năm 2013 lúc 11:40

    Falsetrufalsetru

    343K57 Huy hiệu vàng683 Huy hiệu bạc606 Huy hiệu Đồng

    Xem thảo luậnBeautifulsoup

    Trong bài viết này, chúng tôi sẽ thảo luận về cách có thể được sử dụng để tìm một thẻ có giá trị thuộc tính đã cho trong tài liệu HTML.

    Approach:

    • Nhập mô -đun.
    • Dữ liệu phế liệu từ một trang web.
    • Phân tích chuỗi chuỗi được cạo đến HTML.
    • Sử dụng hàm find () để tìm thuộc tính và thẻ.
    • In kết quả.

    Cú pháp: & nbsp; tìm (attr_name = giá trị trực tuyến)find(attr_name=”value”)

    Dưới đây là một số triển khai của phương pháp trên:

    Ví dụ 1: & nbsp;

    Python3

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    4
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    5
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    6
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    7

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    8
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9

    Data
    
    0
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    Data
    
    2
    Data
    
    3
    Data
    
    4

    Data
    
    5
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    Data
    
    7
    Data
    
    8
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    0
    Data
    
    4

    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    2
    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    3

    Output:

    div

    Ví dụ 2:

    Python3

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    4
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    5
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    6
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    7

    Data
    
    0
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    Data
    
    2
    Data
    
    3
    Data
    
    4

    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    2
    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    3

    Output:

    a

    Data
    
    5
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    Data
    
    7
    Data
    
    8
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    0
    Data
    
    4

    Python3

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    4
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    5
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    6
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    7

    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    8
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9

    Data
    
    0
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    Data
    
    2
    Data
    
    3
    Data
    
    4

    Data
    
    5
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    Data
    
    7
    Data
    
    8
    import urllib2
    import sys       
    
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    
    print data
    
    9
    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    0
    Data
    
    4

    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    2
    from bs4 import BeautifulSoup as BS
    url ="mydomain.com"
    usock = urllib2.urlopen(url)
    data = usock.read()
    usock.close()
    soup = BS(data)
    print soup.find('font', {'class':'big'}).text
    
    3

    Output:

    p