Tôi đang cố chuyển đổi một đoạn văn bản HTML với BeautifulSoup. Dưới đây là một ví dụ:HTML được hiển thị thành văn bản thuần tuý sử dụng Python
<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 đã cố gắng làm điều 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 cách mà phần tử span của tôi luôn luôn là trên một dòng mới. Đây 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ó quy tắc css cần thiết, chỉ cần các phần tử div, span, li, vv thông thường được hiển thị) bằng Python?
Tôi có thể sử dụng html2text ở ngã ba với BeautifulSoup. Ví dụ tôi phân tích cú pháp đoạn html mà tôi quan tâm và sau đó nạp nó vào html2text bằng cách sử dụng pretify()? – btatarov
Có, html2text có thể xử lý HTML theo khối bằng cách gọi 'HTML2Text.feed (chunk)' trên mỗi đoạn kế tiếp, và sau đó gọi 'HTML2Text.close()' để lấy kết quả văn bản (tương tự như ['HTMLParser.feed()' ] (http://docs.python.org/2/library/htmlparser.html#HTMLParser.HTMLParser.feed)). – del
Câu trả lời này làm tôi vui và buồn cùng một lúc. RIP Aaron Swartz. –