Hướng dẫn python html to text - python html thành văn bản

57

Nội dung chính ShowShow

  • Mô tả dự án
  • Cài đặt thế nào
  • Cách chạy bài kiểm tra đơn vị
  • Tài liệu
  • Tải tập tin
  • Phân phối nguồn
  • Phân phối xây dựng
  • Làm cách nào để chuyển đổi HTML thành văn bản trong Python?
  • Làm cách nào để lưu HTML dưới dạng văn bản đơn giản?
  • Làm cách nào để chuyển đổi HTML thành Markdown trong Python?
  • Làm cách nào để trích xuất tất cả văn bản từ một trang web trong Python?

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.
Learn more.

Tôi đang cố gắng chuyển đổi một đoạn văn bản HTML với BeautifulSoup. Đây là một ví dụ:

<div>
    <p>
        Some text
        <span>more text</span>
        even more text
    </p>
    <ul>
        <li>list item</li>
        <li>yet another list item</li>
    </ul>
</div>
<p>Some other text</p>
<ul>
    <li>list item</li>
    <li>yet another list item</li>
</ul>

Tôi đã thử làm một cái gì đó như:

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)

... Nhưng theo cách đó, phần tử nhịp của tôi luôn ở trên một dòng mới. Đây tất nhiên là một ví dụ đơn giản. Có cách nào để có được văn bản trong trang HTML như cách nó sẽ được hiển thị trong trình duyệt (không cần quy tắc CSS, chỉ là cách thường xuyên div, span, li, v.v. Các yếu tố được hiển thị) trong Python không?

Đã hỏi ngày 12 tháng 11 năm 2012 lúc 2:06Nov 12, 2012 at 2:06Nov 12, 2012 at 2:06

Hướng dẫn python html to text - python html thành văn bản

1

Đẹp là một thư viện cào, vì vậy nó có thể không phải là lựa chọn tốt nhất để thực hiện kết xuất HTML. Nếu nó không cần thiết để sử dụng đẹp, bạn nên xem

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
1. Ví dụ:
import html2text
html = open("foobar.html").read()
print html2text.html2text(html)

Điều này ra:

Some text more text even more text

  * list item
  * yet another list item

Some other text

  * list item
  * yet another list item

Đã trả lời ngày 12 tháng 11 năm 2012 lúc 3:09Nov 12, 2012 at 3:09Nov 12, 2012 at 3:09

Deldeldeldel

6.09910 Huy hiệu vàng41 Huy hiệu bạc45 Huy hiệu đồng10 gold badges41 silver badges45 bronze badges10 gold badges41 silver badges45 bronze badges

5

Tôi đã gặp phải vấn đề tương tự khi cố gắng phân tích HTML được kết xuất. Về cơ bản, có vẻ như BS không phải là gói lý tưởng cho việc này. @Del cung cấp giải pháp HTML2Text tuyệt vời.

Trên một câu hỏi khác nhau: BeautifulSoup get_text không tước tất cả các thẻ và javascript @helge được đề cập bằng NLTK. Thật không may, NLTK dường như đang ngừng phương pháp này.

Tôi đã thử cả HTML2TEXT và NLTK.CLEAN_HTML và rất ngạc nhiên bởi kết quả thời gian vì vậy nghĩ rằng họ đã đảm bảo một câu trả lời cho hậu thế. Tất nhiên, tốc độ phụ thuộc rất nhiều vào nội dung của dữ liệu ...

Trả lời từ @Helge (NLTK).

import nltk

%timeit nltk.clean_html(html)
was returning 153 us per loop

Nó hoạt động thực sự tốt để trả lại một chuỗi với HTML được kết xuất. Mô -đun NLTK này nhanh hơn cả HTML2TEXT, mặc dù có lẽ HTML2TEXT mạnh hơn.

Câu trả lời ở trên từ @del

betterHTML = html.decode(errors='ignore')
%timeit html2text.html2text(betterHTML)
%3.09 ms per loop

Đã trả lời ngày 5 tháng 11 năm 2013 lúc 17:53Nov 5, 2013 at 17:53Nov 5, 2013 at 17:53

PaulpaulPaulPaul

6.9478 Huy hiệu vàng39 Huy hiệu bạc40 Huy hiệu đồng8 gold badges39 silver badges40 bronze badges8 gold badges39 silver badges40 bronze badges

3

Mô tả dự án

HTML2TEXT là một tập lệnh Python chuyển đổi một trang HTML thành văn bản ASCII đơn giản, dễ đọc. Tốt hơn nữa, ASCII cũng là dấu hiệu hợp lệ (định dạng văn bản-to-HTML).

Sử dụng:

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
2
Quyền muaSự mô tả
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
3
Hiển thị số phiên bản và lối ra của chương trình
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
4,
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
5
Hiển thị thông báo trợ giúp này và thoát
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
6
Không bao gồm bất kỳ định dạng nào cho các liên kết
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
7
Thoát khỏi tất cả các nhân vật đặc biệt. Đầu ra là ít dễ đọc, nhưng tránh các vấn đề định dạng trường hợp góc.
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
8
Sử dụng các liên kết tham chiếu thay vì các liên kết để tạo Markdown
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
9
Đánh dấu các khối được định dạng sẵn và mã với [mã] ... [/code]

Để biết danh sách đầy đủ các tùy chọn, hãy xem tài liệu

Hoặc bạn có thể sử dụng nó từ trong vòng

import html2text
html = open("foobar.html").read()
print html2text.html2text(html)
0:
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
6

Hoặc với một số tùy chọn cấu hình:

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
7

Ban đầu được viết bởi Aaron Swartz. Mã này được phân phối theo GPLV3.

Cài đặt thế nào

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
1 có sẵn trên pypi https://pypi.org/project/html2text/
def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
9

Cách chạy bài kiểm tra đơn vị

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
0

Để xem kết quả bảo hiểm:

def parse_text(contents_string)
    Newlines = re.compile(r'[\r\n]\s+')
    bs = BeautifulSoup.BeautifulSoup(contents_string, convertEntities=BeautifulSoup.BeautifulSoup.HTML_ENTITIES)
    txt = bs.getText('\n')
    return Newlines.sub('\n', txt)
0

Sau đó mở tệp

import html2text
html = open("foobar.html").read()
print html2text.html2text(html)
2 trong trình duyệt của bạn.

Tài liệu

Tài liệu sống ở đây

Tải tập tin

Tải xuống tệp cho nền tảng của bạn. Nếu bạn không chắc chắn nên chọn cái nào, hãy tìm hiểu thêm về việc cài đặt các gói.

Phân phối nguồn

Phân phối xây dựng

Làm cách nào để chuyển đổi HTML thành văn bản trong Python?

Làm cách nào để lưu HTML dưới dạng văn bản đơn giản?html. escape() method(for Python 3.4+), we can convert the ASCII string into HTML script by replacing ASCII characters with special characters by using html. escape() method. By this method we can decode the HTML entities into text.

Làm cách nào để lưu HTML dưới dạng văn bản đơn giản?

Làm cách nào để chuyển đổi HTML thành Markdown trong Python?.

Làm cách nào để trích xuất tất cả văn bản từ một trang web trong Python?

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.Learn more.

Nhấp vào nút Lưu để lưu dưới dạng tài liệu văn bản ..

Làm cách nào để chuyển đổi HTML thành Markdown trong Python?

Phương pháp này rất hữu ích nếu bạn chuyển đổi số lượng lớn một loạt các tệp HTML thành Markdown - chỉ lặp qua danh sách các tệp HTML và lưu chúng vào các tệp đánh dấu.Từ Markdownify Nhập Markdoify File = Open ("./ Hello-world. HTML", "R").đọc () html = markdownify (file, heading_style = "atx") in (html) ## ## Xin chào, thế giới!iterate over a list of HTML files and save them to Markdown files. from markdownify import markdownify file = open("./hello-world. html", "r"). read() html = markdownify(file, heading_style="ATX") print(html) ## ## Hello, World!iterate over a list of HTML files and save them to Markdown files. from markdownify import markdownify file = open("./hello-world. html", "r"). read() html = markdownify(file, heading_style="ATX") print(html) ## ## Hello, World!

Làm cách nào để trích xuất tất cả văn bản từ một trang web trong Python?

Để trích xuất dữ liệu bằng cách sử dụng máy quét web với Python, bạn cần làm theo các bước cơ bản sau:...

Tìm URL mà bạn muốn cạo ..

Kiểm tra trang ..

Tìm dữ liệu bạn muốn trích xuất ..

Viết mã ..

Chạy mã và trích xuất dữ liệu ..

Lưu trữ dữ liệu theo định dạng cần thiết ..