Cải thiện bài viết Lưu bài viết ĐọcBàn luậnCải thiện bài viết Lưu bài viết Đọc Bàn luận Python3Nhiều lần trong khi làm việc với tự động hóa web, chúng tôi cần chuyển đổi mã HTML thành văn bản. Điều này có thể được thực hiện bằng cách sử dụng đẹp. Mô -đun này cung cấp hàm get_text () lấy HTML làm đầu vào và trả về văn bản làm đầu ra. Ví dụ 1: type(soup)
# bs4.BeautifulSoup
7type(soup)
# bs4.BeautifulSoup
8type(soup)
# bs4.BeautifulSoup
9type(soup)
# bs4.BeautifulSoup
3soup.text
# 'Hello World'
1type(soup)
# bs4.BeautifulSoup
3soup.text
# 'Hello World'
3from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
6 from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
7from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
8 from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
9soup.text
# 'Hello World'
7soup.text
# 'Hello World'
8Output: Section BeautifulSoupExample 1 type(soup)
# bs4.BeautifulSoup
0type(soup)
# bs4.BeautifulSoup
1 type(soup)
# bs4.BeautifulSoup
2type(soup)
# bs4.BeautifulSoup
3type(soup)
# bs4.BeautifulSoup
4type(soup)
# bs4.BeautifulSoup
3type(soup)
# bs4.BeautifulSoup
6 This example extracts data from the live website then converts it into text. In this example, we used
the request module from urllib library to read HTML data from URL.
Python3Output: Chuyển đổi văn bản HTML thành đối tượng dữ liệuMột trang web chỉ là một tệp văn bản ở định dạng HTML. Và văn bản định dạng HTML cuối cùng chỉ là văn bản. Vì vậy, hãy viết HTML của riêng chúng tôi từ đầu, mà không phải lo lắng về "web": htmltxt = "<p>Hello World</p>"
Điểm phân tích HTML là có thể trích xuất hiệu quả các giá trị văn bản trong tài liệu HTML-ví dụ: soup.text
# 'Hello World'
9 - Ngoài đánh dấu HTML - ví dụ: soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
0.Chúng tôi sẽ bắt đầu bằng cách sử dụng Soup tuyệt đẹp, một trong những thư viện phân tích HTML phổ biến nhất của Python. Nhập chức năng Constructor BeautifulSoupĐây là tuyên bố nhập khẩu tiêu chuẩn để sử dụng súp đẹp: from bs4 import BeautifulSoup
Hàm trình xây dựng from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
9 có hai đối số chuỗi:- Chuỗi HTML được phân tích cú pháp.
- Tùy chọn, tên của một trình phân tích cú pháp. Không cần vào lý do tại sao có nhiều triển khai phân tích cú pháp HTML, cho mục đích của chúng tôi, chúng tôi sẽ luôn sử dụng
soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
2.parser. Without getting into the background of why there are multiple implementations of HTML parsing, for our purposes, we will always be using soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
2.
Vì vậy, hãy phân tích một số HTML: from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
Đối tượng "súp"soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
3 là gì? Như mọi khi, hãy sử dụng phương thức soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
4 để kiểm tra một đối tượng không xác định:type(soup)
# bs4.BeautifulSoup
OK, ít nhất chúng ta biết rằng soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
3 không chỉ là văn bản đơn giản. Câu trả lời phức tạp hơn là soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
3 hiện là một đối tượng có độ phức tạp và phương pháp hơn nhiều so với chỉ là một chuỗi python. Tuy nhiên, sự phức tạp này đáng để đi sâu vào, bởi vì đối tượng loại ____ 39 có các phương pháp cụ thể được thiết kế để làm việc hiệu quả với HTML.Đối tượng from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
9 có thuộc tính soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
9 trả về văn bản đơn giản của chuỗi HTML sans các thẻ. Với món súp đơn giản của chúng tôi là mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
0, thuộc tính soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
9 trả về:soup.text
# 'Hello World'
Hãy thử một chuỗi HTML phức tạp hơn: soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
Và đây là chuỗi HTML chứa URL: mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
Về cơ bản, thuộc tính soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
9 của ____ 39 sẽ trả về một chuỗi bị tước của bất kỳ thẻ HTML và siêu dữ liệu nào.Tìm thẻ với mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
4Nói chung, chúng tôi không muốn chỉ nhổ tất cả các văn bản được đánh dấu thẻ của một tài liệu HTML. Thông thường, chúng tôi muốn trích xuất văn bản từ một vài yếu tố cụ thể. Hãy sử dụng lại chuỗi HTML "phức tạp" của chúng tôi từ trên: mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
Nó chứa 3 thẻ HTML: - Một tiêu đề,
mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
5 - Một đoạn văn,
mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
6 - Trong đoạn đó, một siêu liên kết,
mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7
Để tìm phần tử đầu tiên theo thẻ, chúng tôi sử dụng phương thức mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
4 của đối tượng from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
9, lấy tên của TAG làm đối số đầu tiên:soup = BeautifulSoup(mytxt, 'lxml')
soup.find('a')
# <a href="http://example.com">link</a>
Một lần nữa, sử dụng soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
4 để tìm ra chính xác những gì đang được trả lại:htmltxt = "<p>Hello World</p>"
0Sự khác biệt giữa đối tượng mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
1 và from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
9 là gì? Tôi không thực sự biết, nhưng điều quan trọng đối với chúng tôi là sự tương đồng của họ. Đối tượng mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
1 cũng có thuộc tính soup = BeautifulSoup("""<h2>Hello</h2><p>World</p>""", 'lxml')
soup.text
# 'HelloWorld'
9:htmltxt = "<p>Hello World</p>"
1Hãy thử mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
4 với các thẻ khác:htmltxt = "<p>Hello World</p>"
2Đối với các cuộc họp báo của Nhà Trắng-và các bài tập phân tích HTML khác-chúng tôi muốn nhiều hơn là văn bản được hiển thị của HTML. Chúng tôi sẽ muốn một số thuộc tính meta của HTML, chẳng hạn như các giá trị mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
6 cho các thẻ liên kết.Đối tượng mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
1 có thuộc tính mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
8, trả về một từ điển của các cặp giá trị khóa. Hãy bắt đầu từ đầu:htmltxt = "<p>Hello World</p>"
3Để trích xuất giá trị của thuộc tính mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
6 từ đối tượng soup = BeautifulSoup(mytxt, 'lxml')
soup.find('a')
# <a href="http://example.com">link</a>
0, hãy sử dụng mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
8:htmltxt = "<p>Hello World</p>"
4Còn các thẻ khác trong đoạn trích HTML của chúng tôi thì sao? Họ không có thuộc tính và do đó sẽ có từ điển trống cho các thuộc tính mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
8 của họ:htmltxt = "<p>Hello World</p>"
5OK, chúng ta hãy đẩy mạnh sự phức tạp; Điều gì sẽ xảy ra nếu có nhiều thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7 mà chúng tôi muốn trích xuất mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
6 và giá trị văn bản? Chúng tôi sử dụng phương thức soup = BeautifulSoup(mytxt, 'lxml')
soup.find('a')
# <a href="http://example.com">link</a>
6 trả về một bộ sưu tập các yếu tố:htmltxt = "<p>Hello World</p>"
6Một soup = BeautifulSoup(mytxt, 'lxml')
soup.find('a')
# <a href="http://example.com">link</a>
7 hoạt động rất giống các loại trình tự Python khác, chẳng hạn như danh sách:list:htmltxt = "<p>Hello World</p>"
7Tuy nhiên, hãy cẩn thận để không đối xử với soup = BeautifulSoup(mytxt, 'lxml')
soup.find('a')
# <a href="http://example.com">link</a>
7 như thể đó là một mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
1 - hãy cố gắng hiểu lý do tại sao những điều sau đây không có ý nghĩa nhiều (không bao giờ dẫn đến lỗi):htmltxt = "<p>Hello World</p>"
8Các thuộc tính HTML tồn tại ở cấp độ mỗi thẻ-bạn mong đợi nó sẽ trả lại cho một bộ sưu tập thẻ? Nhà thiết kế của Beautiful không có ý tưởng, do đó, thông báo lỗi. Nếu những gì bạn muốn là giá trị mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
6 cho mỗi thẻ, thì bạn phải làm theo cách lỗi thời với vòng lặp:htmltxt = "<p>Hello World</p>"
9Tìm các yếu tố lồng nhauĐiều gì xảy ra khi có nhiều hơn một "nhóm" thẻ liên kết mà chúng tôi muốn? Trong đoạn trích bên dưới, các thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7 mà chúng tôi quan tâm được lồng trong các thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
5:from bs4 import BeautifulSoup
0Đầu tiên, chúng ta có thể thu thập tất cả các thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
5 bằng soup = BeautifulSoup(mytxt, 'lxml')
soup.find('a')
# <a href="http://example.com">link</a>
6:from bs4 import BeautifulSoup
1Mỗi thành viên của htmltxt = "<p>Hello World</p>"
05 là đối tượng mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
1 và mỗi đối tượng mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
1 có phương thức mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
4 mà chúng ta có thể sử dụng để chọn thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7 lồng nhau:from bs4 import BeautifulSoup
2Hoặc, chính xác hơn: from bs4 import BeautifulSoup
3Thế giới thực ví dụ.comPhân tích cú pháp HTML được xây dựng bằng tay của chúng ta không phải là nhiều niềm vui. Vì vậy, hãy lấy một tài liệu HTML "thực" từ web. Phần này nên quen thuộc: from bs4 import BeautifulSoup
4Cho dù nội dung của htmltxt = "<p>Hello World</p>"
10 là một chuỗi được xây dựng bằng tay hay thứ gì đó xuất phát từ web không quan trọng khi chúng tôi làm việc với súp đẹp-chúng tôi chỉ quan tâm đến việc chuyển đổi một chuỗi thành một đối tượng đẹp:from bs4 import BeautifulSoup
5Nhìn vào trang web tại http://www.example.com/. Kiểm tra nguồn của nó. Sau đó, xem bạn có thể viết mã Python trích xuất không: - Số lượng thẻ
mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
6. - Văn bản trong thẻ
mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
6 đầu tiên - Độ dài của văn bản của thẻ
mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
5 đầu tiên - Văn bản của thẻ
mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7 đầu tiên (và duy nhất) mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
6 của thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7 đầu tiên
Câu trả lời của tôi dưới đây: from bs4 import BeautifulSoup
6Bây giờ xem bạn có thể trích xuất từng URL thông báo báo chí từ mẫu báo chí của Nhà Trắng mẫu này không: http://stash.compjour.org/samples/webpages/whitehouse-press-briefings-page-50.html Kiểm tra nguồn HTML phía sau mỗi thẻ thông cáo báo chíHãy nhìn vào url đầu tiên đó. Văn bản của nó là:text is: htmltxt = "<p>Hello World</p>"
17Giá trị mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>
"""
6 của nó là:htmltxt = "<p>Hello World</p>"
19Nếu bạn kiểm tra nguồn và tìm kiếm thẻ cụ thể, bạn sẽ tìm thấy HTML này: from bs4 import BeautifulSoup
7Đối với trang này, một liên kết không chỉ là thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7; Nó được lồng trong một số thẻ khác. Dưới đây là phiên bản được định dạng khá của một liên kết đó và các thẻ cha mẹ của nó:from bs4 import BeautifulSoup
8Xử lý trang họp báo như súpHãy biến HTML phức tạp này thành súp. Xem nếu bạn có thể nhớ các bước để tải xuống trang web và chuyển đổi nó thành một đối tượng súp đủ tốt để nhập chúng bằng bộ nhớ: from bs4 import BeautifulSoup
9Có 10 cuộc họp báo trên mỗi trang, nhưng rõ ràng là có hơn 10 thẻ liên kết. Đủ dễ dàng để tìm hiểu: from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
0Vậy làm thế nào để chúng ta chỉ nhận được các URL cho các cuộc họp báo thực tế? Từ HTML mà chúng tôi đã kiểm tra trước đó, chúng tôi muốn các thẻ mytxt = """
<h2>Hello World</h2>
<p>This is a <a href="http://example.com">link</a></p>"""
soup = BeautifulSoup(mytxt, 'lxml')
soup.text
# 'Hello World\nThis is a link'
7 được lồng trong các thẻ htmltxt = "<p>Hello World</p>"
22.Vì vậy, hãy tìm và đếm số lượng thẻ htmltxt = "<p>Hello World</p>"
23:from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
1Này, thật là một sự trùng hợp ngẫu nhiên - có chính xác là nhiều thẻ htmltxt = "<p>Hello World</p>"
23 như các liên kết để giao ban báo chí. Đây chỉ là một kết quả may mắn của cách các WebDevs của Nhà Trắng quyết định xây dựng trang này.Dưới đây là một cách để trích xuất tất cả các URL của các thẻ liên kết lồng nhau vào danh sách: from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
2Đây là một ngắn gọn hơn - mặc dù khó đọc hơn - phiên bản: from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
3Dù bằng cách nào, đây là nội dung của htmltxt = "<p>Hello World</p>"
25:from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
4Tất cả cùng nhauĐể trích xuất các URL từ trang web mẫu đóng hộp, đây là tất cả các mã: from bs4 import BeautifulSoup
htmltxt = "<p>Hello World</p>"
soup = BeautifulSoup(htmltxt, 'lxml')
5Bây giờ tất cả những gì chúng ta phải làm là lặp lại điều này cho mỗi trang của danh sách giao ban báo chí |