Tôi đang cố gắng chuyển đổi một khối HTML thành văn bản bằng Python. Input: <div class="body"><p><strong></strong></p>
<p><strong></strong>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. <a href="http://example.com/" target="_blank" class="source">Some Link</a> Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p></div>
Đầu ra của bạn: Lorem Ipsum Dolor SIT AMET, Lãnh sự quảng cáo elit. Aennean Commodo Ligula Eget Dolor. Aenean Massa Lãnh đạo adipiscing elit. Một số liên kết Aenenan Commodo Ligula Eget Dolor. Aenean Massa AENEAN MASSA.LOREM IPSUM DOLOR SIT AMET, Aennean Commodo Ligula Eget Dolor. Aenean Massa Lorem Ipsum Dolor SIT AMET, Lãnh sự quảng cáo elit. Aennean Commodo Ligula Eget Dolor. Aenean Massa Lãnh đạo adipiscing elit. Một số liên kết Aenenan Commodo Ligula Eget Dolor. Aenean Massa
AENEAN MASSA.LOREM IPSUM DOLOR SIT AMET, Aennean Commodo Ligula Eget Dolor. Aenean Massa #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
Lãnh đạo adipiscing elit. Aennean Commodo Ligula Eget Dolor. Aenean Massa Tôi thử mô -đun from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
3 mà không thành công nhiều:Đối tượng from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
4 tạo ra khối HTML ở trên. Tôi muốn chuyển đổi nó để chuyển đổi và in nó trên màn hình.21 gold badges78
silver badges117 bronze badges Rob BednarkFeb 4, 2013 at 19:55 23.9K21 Huy hiệu vàng78 Huy hiệu bạc117 Huy hiệu đồngAaron Bandelli Đã hỏi ngày 4 tháng 2 năm 2013 lúc 19: 52 gold badges11 silver badges16 bronze badges 1 Aaron Bandelliaron Bandelli from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
output: Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
1.1182 huy hiệu vàng11 Huy hiệu bạc16 Huy hiệu đồng print(soup.get_text('\n'))
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
5 đầu ra những gì bạn muốn:soup.get_text().replace('\n','\n\n')
Tôi thử mô -đun from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
3 mà không thành công nhiều:Đối tượng from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
4 tạo ra khối HTML ở trên. Tôi muốn chuyển đổi nó để chuyển đổi và in nó trên màn hình.21 gold badges78 silver badges117 bronze badges Rob BednarkFeb 4, 2013 at 20:06
3 23.9K21 Huy hiệu vàng78 Huy hiệu bạc117 Huy hiệu đồng from html.parser import HTMLParser
class HTMLFilter(HTMLParser):
text = ""
def handle_data(self, data):
self.text += data
f = HTMLFilter()
f.feed(data)
print(f.text)
Đã hỏi ngày 4 tháng 2 năm 2013 lúc 19: 5 Aaron Bandelliaron Bandelli17 gold badges80 silver badges80 bronze badges 1.1182 huy hiệu vàng11 Huy hiệu bạc16 Huy hiệu đồngApr 24, 2019 at 8:03 from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
5 đầu ra những gì bạn muốn:FrBrGeorgeĐể giữ Newlines:5 silver badges6 bronze badges
4 Để giống hệt với ví dụ của bạn, bạn có thể thay thế một dòng mới bằng hai dòng mới: import re
data = """<div class="body"><p><strong></strong></p>
<p><strong></strong>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. <a href="http://example.com/" target="_blank" class="source">Some Link</a> Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p>
<p>Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa</p></div>"""
data = re.sub(r'<.*?>', '', data)
print(data)
Đã trả lời ngày 4 tháng 2 năm 2013 lúc 20: 0
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Tôi thử mô -đun from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
3 mà không thành công nhiều:Đối tượng from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
4 tạo ra khối HTML ở trên. Tôi muốn chuyển đổi nó để chuyển đổi và in nó trên màn hình.21 gold badges78 silver badges117
bronze badges Rob BednarkFeb 4, 2013 at 20:02 23.9K21 Huy hiệu vàng78 Huy hiệu bạc117 Huy hiệu đồngATOzTOA Đã hỏi ngày 4 tháng 2 năm 2013 lúc 19: 522 gold badges93 silver badges116 bronze badges 3 Aaron Bandelliaron Bandelli from bs4 import BeautifulSoup
def parse_html(html):
elem = BeautifulSoup(html, features="html.parser")
text = ''
for e in elem.descendants:
if isinstance(e, str):
text += e.strip()
elif e.name in ['br', 'p', 'h2', 'h2', 'h3', 'h4','tr', 'th']:
text += '\n'
elif e.name == 'li':
text += '\n- '
return text
1.1182 huy hiệu vàng11 Huy hiệu bạc16 Huy hiệu đồng from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
5 đầu ra những gì bạn muốn:Mar 18, 2021 at 11:57 Để giữ Newlines:Andreas Để giống hệt với ví dụ của bạn, bạn có thể thay thế một dòng mới bằng hai dòng mới:16 silver badges27 bronze badges Đã trả lời ngày 4 tháng 2 năm 2013 lúc 20: 0 #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
0Có thể sử dụng tiêu chuẩn Python _______26:Feb 4, 2013 at 20:11 t-8cht-8cht-8ch Julienc12 silver badges18 bronze badges 4 17.8K17 Huy hiệu vàng80 Huy hiệu bạc80 Huy hiệu đồng #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
1 Đã trả lời ngày 24 tháng 4 năm 2019 lúc 8: 0 Frbgeenguargegegegegegegege 4905 Huy hiệu bạc6 Huy hiệu ĐồngJun 3, 2020 at 18:45
Bạn có thể sử dụng một biểu thức thông thường, nhưng nó không được khuyến khích. Mã sau đây xóa tất cả các thẻ HTML trong dữ liệu của bạn, cung cấp cho bạn văn bản:Mark Chackerian Đầu ra6 gold badges104 silver badges97 bronze badges Đã trả lời ngày 4 tháng 2 năm 2013 lúc 20: 0 #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
2AtoztoaatoztoaSep 15, 2020 at 9:50 33.6K22 Huy hiệu vàng93 Huy hiệu bạc116 Huy hiệu Brozedermasmid Vấn đề chính là cách bạn giữ một số định dạng cơ bản. Đây là cách tiếp cận tối thiểu của riêng tôi đối với các dòng và đạn mới của Kee. Tôi chắc chắn đó không phải là giải pháp cho mọi thứ bạn muốn giữ nó là điểm khởi đầu:4 silver badges7 bronze badges Trên một dòng mới cho _ from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
7 và một dòng mới với _from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
8 trước văn bản cho các phần tử _from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
9Input: #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
3Output: #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
4Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Đã trả lời ngày 18 tháng 3 năm 2021 lúc 11: 5Oct 9, 2020 at 20:38 Andreasandreasemehex
87816 Huy hiệu bạc27 Huy hiệu đồng9 gold badges53 silver badges93 bronze badges Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
0 đặt một dòng mới giữa các đoạn văn.#!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
6 Đã trả lời ngày 4 tháng 2 năm 2013 lúc 20: 1Sep 25, 2014 at 20:47 1 2.51512 Huy hiệu bạc18 Huy hiệu đồng #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
7Tôi thích câu trả lời không phụ thuộc của @Dec 12, 2017 at 22:58 Xem bình luận cho việc sử dụng.Sarah Messer Cuộc trò chuyện này tất cả các văn bản bên trong Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
1, theo lý thuyết có thể bao gồm các thẻ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
3 và _______34. Furationing có thể được điều trị bằng cách mở rộng mô hình như được hiển thị cho Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
1 - tức là. Đặt các biến thể hiện _______36 hoặc Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
23 silver badges40 bronze badges Đã trả lời ngày 3 tháng 6 năm 2020 lúc 18: 4 #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
8Mark Chackerianmark Chackerian Lorem Ipsum Dolor SIT AMET, Lãnh sự quảng cáo elit. Aennean Commodo Ligula Eget Dolor. Aenean Massa Lãnh đạo adipiscing elit. Một số liên kết Aenenan Commodo Ligula Eget Dolor. Aenean Massa AENEAN MASSA.LOREM IPSUM DOLOR SIT AMET, Aennean Commodo Ligula Eget Dolor. Aenean Massa Lorem Ipsum Dolor SIT AMET, Lãnh sự quảng cáo elit. Aennean Commodo Ligula Eget Dolor. Aenean Massa Lãnh đạo adipiscing elit. Một số liên kết Aenenan Commodo Ligula Eget Dolor. Aenean Massa
20.3k6 Huy hiệu vàng104 Huy hiệu bạc97 Huy hiệu BrozeAug 19 at 13:06
Có một số điều tốt đẹp ở đây, và tôi cũng có thể ném vào giải pháp của mình:Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Some Link Aenean commodo ligula eget dolor. Aenean massa
Aenean massa.Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
Consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa
8-based approach with markup sanitizing before converting to plain text. Đã trả lời ngày 15 tháng 9 năm 2020 lúc 9: 5 Sẽ xóa các khối tập lệnh và tất cả các văn bản không mong muốn.Bạn có thể định cấu hình phiên bản LXML Cleaner cho phù hợp với nhu cầu của bạn. #!/usr/bin/env python
import urllib2
import html2text
from BeautifulSoup import BeautifulSoup
soup = BeautifulSoup(urllib2.urlopen('http://example.com/page.html').read())
txt = soup.find('div', {'class' : 'body'})
print(html2text.html2text(txt))
9 Đã trả lời ngày 25 tháng 10 năm 2021 lúc 13:48Oct 25, 2021 at 13:48 CCPIZZACCPIZZAccpizza 26.5K14 Huy hiệu vàng155 Huy hiệu bạc150 Huy hiệu đồng14 gold badges155 silver badges150 bronze badges Cá nhân tôi thích giải pháp Gazpacho của Emehex, nhưng nó chỉ sử dụng biểu thức chính quy để lọc các thẻ.Không còn phép thuật nữa.Điều này có nghĩa là giải pháp giữ văn bản bên trong và. Vì vậy, tôi thà thực hiện một giải pháp đơn giản dựa trên các biểu thức thông thường và sử dụng thư viện Python 3.4 tiêu chuẩn cho các thực thể HTML UNESCAPE: from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
0Tất nhiên, điều này không có lỗi chứng minh là các giải pháp PLUSSOUP hoặc các trình phân tích cú pháp khác.Nhưng bạn không cần bất kỳ gói bên thứ 3 nào. Đã trả lời ngày 29 tháng 10 năm 2021 lúc 11:39Oct 29, 2021 at 11:39 QuickQuickquick 1.05410 Huy hiệu bạc17 Huy hiệu đồng10 silver badges17 bronze badges Tôi đã gặp phải vấn đề tương tự bằng cách sử dụng Scrapy, bạn có thể thử thêm điều này vào Cài đặt.Py from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
1 Đã trả lời ngày 28 tháng 6 lúc 23:46Jun 28 at 23:46 Jaypee Tanjaypee tanJaypee Tan 951 Huy hiệu bạc10 Huy hiệu đồng1 silver badge10 bronze badges
from bs4 import BeautifulSoup
soup = BeautifulSoup(html)
print(soup.get_text())
2 Đã trả lời ngày 18 tháng 1 lúc 8:02Jan 18 at 8:02 1 |