Trình phân tích css BeautifulSoup

Trong bài viết này, chúng ta sẽ thảo luận về cách tìm thẻ bằng CSS bằng BeautifulSoup. Chúng tôi được cung cấp một tài liệu HTML, chúng tôi cần tìm và trích xuất các thẻ từ tài liệu bằng lớp CSS

ví dụ

HTML Document:


     Geeksforgeeks 


    
Extract this tag
Output:
Extract this tag

Mô-đun bắt buộc

  • bs4. Nó là một thư viện python được sử dụng để cạo dữ liệu từ HTML, XML và các ngôn ngữ đánh dấu khác.
    Đảm bảo rằng bạn đã cài đặt pip trên hệ thống của mình.
    Chạy lệnh sau trong terminal để cài đặt thư viện này-
pip install bs4
or
pip install beautifulsoup4

Tiếp cận

  • Nhập thư viện bs4
  • Tạo tài liệu HTML
  • Phân tích nội dung thành một đối tượng BeautifulSoup
  • Tìm kiếm theo lớp CSS –  Tên của thuộc tính CSS, “lớp”, là một từ dành riêng trong Python. Trình biên dịch đưa ra lỗi cú pháp nếu lớp được sử dụng làm đối số từ khóa. Chúng ta có thể tìm kiếm lớp CSS bằng cách sử dụng đối số từ khóa class_
    Chúng ta có thể truyền class_ một chuỗi, một biểu thức chính quy, một hàm hoặc True.
  • find_all() với đối số từ khóa class_ được sử dụng để tìm tất cả các thẻ có lớp CSS đã cho
    Nếu chúng tôi chỉ cần tìm một thẻ thì chúng tôi sẽ sử dụng find()
  • In các thẻ được trích xuất

ví dụ 1. Tìm thẻ bằng phương thức find()

Python3




pip install bs4
or
pip install beautifulsoup4
5

pip install bs4
or
pip install beautifulsoup4
6
pip install bs4
or
pip install beautifulsoup4
7
pip install bs4
or
pip install beautifulsoup4
8
pip install bs4
or
pip install beautifulsoup4
9

 

pip install bs4
or
pip install beautifulsoup4
0

pip install bs4
or
pip install beautifulsoup4
1
pip install bs4
or
pip install beautifulsoup4
0
pip install bs4
or
pip install beautifulsoup4
1

pip install bs4
or
pip install beautifulsoup4
2____13

pip install bs4
or
pip install beautifulsoup4
4
pip install bs4
or
pip install beautifulsoup4
5

pip install bs4
or
pip install beautifulsoup4
6
pip install bs4
or
pip install beautifulsoup4
7

pip install bs4
or
pip install beautifulsoup4
4
pip install bs4
or
pip install beautifulsoup4
9

pip install bs4
or
pip install beautifulsoup4
4
pip install bs4
or
pip install beautifulsoup4
31

pip install bs4
or
pip install beautifulsoup4
6
pip install bs4
or
pip install beautifulsoup4
33

pip install bs4
or
pip install beautifulsoup4
4
pip install bs4
or
pip install beautifulsoup4
35

pip install bs4
or
pip install beautifulsoup4
36
pip install bs4
or
pip install beautifulsoup4
37

pip install bs4
or
pip install beautifulsoup4
38
pip install bs4
or
pip install beautifulsoup4
1

 

pip install bs4
or
pip install beautifulsoup4
50

pip install bs4
or
pip install beautifulsoup4
51
pip install bs4
or
pip install beautifulsoup4
52

 

pip install bs4
or
pip install beautifulsoup4
53
pip install bs4
or
pip install beautifulsoup4
54

pip install bs4
or
pip install beautifulsoup4
53
pip install bs4
or
pip install beautifulsoup4
56
pip install bs4
or
pip install beautifulsoup4
0
pip install bs4
or
pip install beautifulsoup4
58
pip install bs4
or
pip install beautifulsoup4
59
pip install bs4
or
pip install beautifulsoup4
60

 

pip install bs4
or
pip install beautifulsoup4
53
pip install bs4
or
pip install beautifulsoup4
62

pip install bs4
or
pip install beautifulsoup4
53
pip install bs4
or
pip install beautifulsoup4
64
pip install bs4
or
pip install beautifulsoup4
0
pip install bs4
or
pip install beautifulsoup4
66
pip install bs4
or
pip install beautifulsoup4
67
pip install bs4
or
pip install beautifulsoup4
68
pip install bs4
or
pip install beautifulsoup4
69
pip install bs4
or
pip install beautifulsoup4
0
pip install bs4
or
pip install beautifulsoup4
556
pip install bs4
or
pip install beautifulsoup4
60

Mô-đun này định nghĩa một lớp dùng làm cơ sở để phân tích cú pháp các tệp văn bản được định dạng bằng HTML (Ngôn ngữ đánh dấu siêu văn bản) và XHTML

lớp html. trình phân tích cú pháp. HTMLLParser(* , convert_charrefs=True)

Tạo một phiên bản trình phân tích cú pháp có thể phân tích cú pháp đánh dấu không hợp lệ

Nếu convert_charrefs là

pip install bs4
or
pip install beautifulsoup4
52 (mặc định), tất cả tham chiếu ký tự (ngoại trừ tham chiếu trong phần tử
pip install bs4
or
pip install beautifulsoup4
53/
pip install bs4
or
pip install beautifulsoup4
54) sẽ tự động được chuyển đổi thành ký tự Unicode tương ứng

Một phiên bản được cung cấp dữ liệu HTML và gọi các phương thức xử lý khi gặp thẻ bắt đầu, thẻ kết thúc, văn bản, nhận xét và các phần tử đánh dấu khác. Người dùng nên phân lớp và ghi đè các phương thức của nó để thực hiện hành vi mong muốn

Trình phân tích cú pháp này không kiểm tra xem thẻ kết thúc có khớp với thẻ bắt đầu hay không gọi trình xử lý thẻ kết thúc cho các phần tử được đóng hoàn toàn bằng cách đóng phần tử bên ngoài

Đã thay đổi trong phiên bản 3. 4. đã thêm đối số từ khóa convert_charrefs.

Đã thay đổi trong phiên bản 3. 5. Giá trị mặc định cho đối số convert_charrefs hiện là

pip install bs4
or
pip install beautifulsoup4
52.

Ứng dụng trình phân tích cú pháp HTML mẫu

Như một ví dụ cơ bản, dưới đây là một trình phân tích cú pháp HTML đơn giản sử dụng lớp để in ra các thẻ bắt đầu, thẻ kết thúc và dữ liệu khi chúng gặp phải

pip install bs4
or
pip install beautifulsoup4
9

Đầu ra sau đó sẽ là

pip install bs4
or
pip install beautifulsoup4
5

phương pháp

trường hợp có các phương pháp sau

HTMLParser. nguồn cấp dữ liệu(dữ liệu)

Cung cấp một số văn bản cho trình phân tích cú pháp. Nó được xử lý trong chừng mực nó bao gồm các yếu tố hoàn chỉnh; . dữ liệu phải được

HTMLParser. đóng()

Buộc xử lý tất cả dữ liệu được lưu vào bộ đệm như thể nó được theo sau bởi dấu cuối tệp. Phương thức này có thể được định nghĩa lại bởi một lớp dẫn xuất để xác định quá trình xử lý bổ sung ở cuối đầu vào, nhưng phiên bản được xác định lại phải luôn gọi phương thức của lớp cơ sở

HTMLParser. đặt lại()

Đặt lại phiên bản. Mất tất cả dữ liệu chưa xử lý. Điều này được gọi ngầm tại thời điểm khởi tạo

HTMLParser. nhận vị trí()

Trả về số dòng hiện tại và phần bù

HTMLParser. get_starttag_text()

Trả lại văn bản của thẻ bắt đầu được mở gần đây nhất. Điều này thường không cần thiết cho quá trình xử lý có cấu trúc, nhưng có thể hữu ích trong việc xử lý HTML “như đã triển khai” hoặc để tạo lại đầu vào với những thay đổi tối thiểu (có thể giữ nguyên khoảng trắng giữa các thuộc tính, v.v. )

Các phương thức sau đây được gọi khi gặp dữ liệu hoặc các phần tử đánh dấu và chúng có nghĩa là sẽ bị ghi đè trong một lớp con. Việc triển khai lớp cơ sở không làm gì cả (ngoại trừ)

HTMLParser. handle_starttag(tag , attrs)

Phương thức này được gọi để xử lý thẻ bắt đầu của một phần tử (e. g.

pip install bs4
or
pip install beautifulsoup4
16)

Đối số thẻ là tên của thẻ được chuyển thành chữ thường. Đối số attrs là một danh sách gồm các cặp

pip install bs4
or
pip install beautifulsoup4
17 chứa các thuộc tính được tìm thấy bên trong dấu ngoặc kép
pip install bs4
or
pip install beautifulsoup4
18 của thẻ. Tên sẽ được dịch sang chữ thường và các trích dẫn trong giá trị đã bị xóa, đồng thời các tham chiếu ký tự và thực thể đã được thay thế

Chẳng hạn, đối với thẻ

pip install bs4
or
pip install beautifulsoup4
19, phương thức này sẽ được gọi là
pip install bs4
or
pip install beautifulsoup4
50

Tất cả các tham chiếu thực thể từ được thay thế trong các giá trị thuộc tính

HTMLParser. handle_endtag(thẻ)

Phương thức này được gọi để xử lý thẻ kết thúc của một phần tử (e. g.

pip install bs4
or
pip install beautifulsoup4
52)

Đối số thẻ là tên của thẻ được chuyển thành chữ thường

HTMLParser. handle_startendtag(tag , attrs)

Tương tự như , nhưng được gọi khi trình phân tích cú pháp gặp thẻ trống kiểu XHTML (

pip install bs4
or
pip install beautifulsoup4
54). Phương thức này có thể bị ghi đè bởi các lớp con yêu cầu thông tin từ vựng cụ thể này;

HTMLParser. handle_data(dữ liệu)

Phương thức này được gọi để xử lý dữ liệu tùy ý (e. g. nút văn bản và nội dung của

pip install bs4
or
pip install beautifulsoup4
57 và
pip install bs4
or
pip install beautifulsoup4
58)

HTMLParser. handle_entityref(tên)

Phương thức này được gọi để xử lý một tham chiếu ký tự được đặt tên có dạng

pip install bs4
or
pip install beautifulsoup4
59 (e. g.
pip install bs4
or
pip install beautifulsoup4
10), trong đó tên là tham chiếu thực thể chung (e. g.
pip install bs4
or
pip install beautifulsoup4
11). Phương thức này không bao giờ được gọi nếu convert_charrefs là
pip install bs4
or
pip install beautifulsoup4
52

HTMLParser. handle_charref(tên)

Phương thức này được gọi để xử lý các tham chiếu ký tự số thập phân và thập lục phân có dạng

pip install bs4
or
pip install beautifulsoup4
13 và
pip install bs4
or
pip install beautifulsoup4
14. Ví dụ: số thập phân tương đương với
pip install bs4
or
pip install beautifulsoup4
10 là
pip install bs4
or
pip install beautifulsoup4
16, trong khi số thập lục phân là
pip install bs4
or
pip install beautifulsoup4
17; . Phương thức này không bao giờ được gọi nếu convert_charrefs là
pip install bs4
or
pip install beautifulsoup4
52

HTMLParser. handle_comment(dữ liệu)

Phương thức này được gọi khi gặp một bình luận (e. g.

pip install bs4
or
pip install beautifulsoup4
21)

Ví dụ: nhận xét

pip install bs4
or
pip install beautifulsoup4
22 sẽ khiến phương thức này được gọi với đối số
pip install bs4
or
pip install beautifulsoup4
23

Nội dung của các nhận xét có điều kiện (condcom) của Internet Explorer cũng sẽ được gửi đến phương thức này, vì vậy, đối với

pip install bs4
or
pip install beautifulsoup4
24, phương thức này sẽ nhận được
pip install bs4
or
pip install beautifulsoup4
25

HTMLParser. handle_decl(decl)

Phương thức này được gọi để xử lý một khai báo doctype HTML (e. g.

pip install bs4
or
pip install beautifulsoup4
26)

Tham số boong sẽ là toàn bộ nội dung khai báo bên trong đánh dấu ________ 527 (e. g.

pip install bs4
or
pip install beautifulsoup4
28)

HTMLParser. handle_pi(dữ liệu)

Phương thức được gọi khi gặp hướng dẫn xử lý. Tham số dữ liệu sẽ chứa toàn bộ hướng dẫn xử lý. Ví dụ: đối với hướng dẫn xử lý

pip install bs4
or
pip install beautifulsoup4
29, phương thức này sẽ được gọi là
pip install bs4
or
pip install beautifulsoup4
10. Nó dự định sẽ bị ghi đè bởi một lớp dẫn xuất;

Ghi chú

Lớp sử dụng các quy tắc cú pháp SGML để xử lý các hướng dẫn. Một hướng dẫn xử lý XHTML sử dụng đuôi

pip install bs4
or
pip install beautifulsoup4
12 sẽ khiến
pip install bs4
or
pip install beautifulsoup4
12 được đưa vào dữ liệu

HTMLParser. unknown_decl(dữ liệu)

Phương thức này được gọi khi trình phân tích cú pháp đọc một khai báo không được nhận dạng

Tham số dữ liệu sẽ là toàn bộ nội dung khai báo bên trong đánh dấu

pip install bs4
or
pip install beautifulsoup4
14. Đôi khi nó hữu ích khi bị ghi đè bởi một lớp dẫn xuất. Việc triển khai lớp cơ sở không làm gì cả

ví dụ

Lớp sau triển khai trình phân tích cú pháp sẽ được sử dụng để minh họa thêm các ví dụ

pip install bs4
or
pip install beautifulsoup4
1

Phân tích cú pháp một loại tài liệu

pip install bs4
or
pip install beautifulsoup4
5

Phân tích cú pháp một phần tử với một vài thuộc tính và tiêu đề

pip install bs4
or
pip install beautifulsoup4
1

Nội dung của các phần tử

pip install bs4
or
pip install beautifulsoup4
53 và
pip install bs4
or
pip install beautifulsoup4
54 được trả về nguyên trạng mà không cần phân tích cú pháp thêm

pip install bs4
or
pip install beautifulsoup4
2

Phân tích cú pháp nhận xét

pip install bs4
or
pip install beautifulsoup4
1

Phân tích các tham chiếu ký tự có tên và số và chuyển đổi chúng thành ký tự chính xác (lưu ý. 3 tài liệu tham khảo này đều tương đương với

pip install bs4
or
pip install beautifulsoup4
17)

pip install bs4
or
pip install beautifulsoup4
3

Cung cấp các khối không đầy đủ để hoạt động, nhưng có thể được gọi nhiều lần (trừ khi convert_charrefs được đặt thành

pip install bs4
or
pip install beautifulsoup4
52)

Trình phân tích cú pháp có được sử dụng trong BeautifulSoup không?

Beautiful Soup là một gói Python để phân tích cú pháp các tài liệu HTML và XML (bao gồm cả việc có đánh dấu không đúng định dạng, tôi. e. các thẻ không đóng, do đó được đặt tên theo súp thẻ). Nó tạo ra một cây phân tích cú pháp cho các trang được phân tích cú pháp có thể được sử dụng để trích xuất dữ liệu từ HTML, rất hữu ích cho việc quét web.

Làm cách nào để trích xuất CSS từ một trang web bằng Python?

Cách trích xuất các tệp Script và CSS từ các trang web bằng Python .
nhập yêu cầu từ bs4 nhập BeautifulSoup dưới dạng bs từ urllib. .
# lấy nội dung HTML html = phiên. .
# lấy tập tin JavaScript script_files = [] cho tập lệnh trong soup. .
# lấy các tệp CSS css_files = [] cho css trong súp

BeautifulSoup có xử lý HTML bị hỏng không?

BeautifulSoup là một gói Python phân tích cú pháp HTML bị hỏng , giống như lxml hỗ trợ nó dựa trên trình phân tích cú pháp của libxml2.

Làm cách nào để sửa đổi HTML bằng BeautifulSoup?

Phương pháp tiếp cận từng bước. Bước 1. Đầu tiên, nhập các thư viện Beautiful Soup, os và re. Bước 2. Bây giờ, xóa đoạn cuối cùng của đường dẫn. Bước 3. Sau đó, mở tệp HTML mà bạn muốn thực hiện thay đổi. Bước 4. Hơn nữa, phân tích cú pháp tệp HTML trong Beautiful Soup.