Hướng dẫn quét web php

Trong một bài viết trước, tôi đã hướng dẫn bạn cách sử dụng Yêu cầu mô-đun để truy cập các trang web bằng Python. Hướng dẫn đó đã đề cập đến rất nhiều chủ đề như tạo các yêu cầu GET/POST và tải về các nội dung như hình ảnh hoặc tệp PDF bằng cách lập trình. Một điều còn thiếu trong hướng dẫn đó là về kỹ thuật cạo [trích xuất nội dung] trang web mà bạn đã truy cập bằng Yêu cầu trích xuất thông tin mà bạn cần

Trong hướng dẫn này, bạn sẽ được khám phá về Beautiful Soup, một thư viện Python để trích xuất dữ liệu từ các tệp HTML. Trọng tâm của hướng dẫn này là nghiên cứu các kiến ​​thức cơ bản của thư viện, và các chủ đề nâng cao sẽ được đề cập trong hướng dẫn tiếp theo. Xin lưu ý rằng hướng dẫn này sử dụng Beautiful Soup 4 cho tất cả các ví dụ

Cài đặt

Bạn có thể cài đặt Beautiful Soup 4 bằng

$ pip install beautifulsoup4
79. Tên gói là
$ pip install beautifulsoup4
80. Nó sẽ làm việc trên cả Python 2 và Python 3

1
$ pip install beautifulsoup4

Nếu bạn chưa cài đặt pip trên hệ thống của mình, bạn có thể trực tiếp tải về nguồn tarball của Beautiful Soup 4 và cài đặt nó bằng

$ pip install beautifulsoup4
81

1
$ python setup.py install

BeautifulSoup ban đầu được đóng gói như là mã của Python 2. Khi bạn cài đặt nó để sử dụng với Python 3, nó sẽ tự động cập nhật mã của Python 3. Mã sẽ không được chuyển đổi trừ khi bạn cài đặt gói. Dưới đây là một số biến phổ biến lỗi mà bạn có thể bắt gặp

  • $ pip install beautifulsoup4
    
    82 "No module named HTMLParser" xảy ra khi bạn chạy phiên bản Python 2 của mã Python 3
  • $ pip install beautifulsoup4
    
    82 "Không có mô-đun có tên html. parser" xảy ra khi bạn chạy phiên bản Python 3 của mã Python 2

Cả hai lỗi trên đều có thể được giải quyết bằng cách gỡ cài đặt và cài đặt lại Beautiful Soup

Cài đặt Parser

Trước khi thảo luận về sự khác biệt giữa các trình phân tích cú pháp khác nhau mà bạn có thể sử dụng tương tự với Beautiful Soup, hãy viết mã để tạo ra một soup

1
$ pip install beautifulsoup4
0
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
3

Đối tượng

$ pip install beautifulsoup4
84 có thể nhận hai đối số. Đối số đầu tiên là đánh dấu sự thật, và đối số thứ hai là trình phân tích cú pháp mà bạn muốn sử dụng. Các trình phân tích cú pháp khác nhau là.
$ pip install beautifulsoup4
85, lxml và html5lib.
$ pip install beautifulsoup4
86 has two version, a HTML parser and a XML parser

$ pip install beautifulsoup4
85 là một trình phân tích cú pháp được tích hợp sẵn và nó không hoạt động tốt trong các phiên bản cũ của Python. Bạn có thể cài đặt các trình phân tích cú pháp khác nhau bằng các lệnh sau

1
$ pip install beautifulsoup4
0
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
2

Trình phân tích cú pháp

$ pip install beautifulsoup4
86 rất nhanh và có thể được sử dụng để nhanh chóng phân tích HTML. Mặt khác, trình phân tích cú pháp
$ pip install beautifulsoup4
89 rất chậm, nhưng nó cũng cực kỳ dễ sử dụng. Dưới đây là một ví dụ về việc sử dụng từng trình phân tích cú pháp này

1
$ pip install beautifulsoup4
3
$ pip install beautifulsoup4
1_______06
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
8
$ pip install beautifulsoup4
9
1
0
1
1
1
2
$ pip install beautifulsoup4
6
1
4
1
5
1
6
1
7
1
8
1
9
$ pip install beautifulsoup4
6
$ python setup.py install
1
$ python setup.py install
2
$ python setup.py install
3
$ pip install beautifulsoup4
8
$ python setup.py install
5
$ python setup.py install
6
$ python setup.py install
7
$ python setup.py install
8
$ pip install beautifulsoup4
6
1
0
1
1

Những sự khác biệt chỉ được đưa ra trong ví dụ trên chỉ có vấn đề khi bạn phân tích HTML không hợp lệ. Tuy nhiên, hầu hết HTML trên web không đúng định dạng, và nắm bắt được những khác biệt này sẽ giúp bạn loại bỏ lỗi một số phân tích lỗi và trình phân tích cú pháp quyết định mà bạn muốn sử dụng trong một dự án. Nói chung, trình phân tích cú pháp

$ pip install beautifulsoup4
86 là một lựa chọn rất tốt

Các đối tượng trong Beautiful Soup

Beautiful Soup phân tích tài liệu HTML đã cho Python một cây các đối tượng. Có bốn đối tượng Python chính mà bạn cần biết. ________ 091, ________ 092, ________ 084 và ________ 094

Đối tượng

$ pip install beautifulsoup4
91 chỉ về một thẻ XML hoặc HTML có thật trong tài liệu. Bạn có thể truy cập vào tên của thẻ bằng
$ pip install beautifulsoup4
96. Bạn có thể đặt tên thành một cái gì đó khác. Thay đổi tên sẽ được hiển thị trong đánh dấu do Beautiful Soup tạo ra

Bạn có thể truy cập các thuộc tính khác nhau như class và id của thẻ bằng

$ pip install beautifulsoup4
97 và
$ pip install beautifulsoup4
98 tương ứng. Bạn cũng có thể truy cập vào toàn bộ từ điển của các thuộc tính bằng cách sử dụng
$ pip install beautifulsoup4
99. Bạn cũng có thể thêm, xóa hoặc sửa đổi các thuộc tính của thẻ. Các thuộc tính như
1
00 của một phần tử có thể lấy nhiều giá trị được lưu trữ dưới dạng một danh sách

Văn bản bên trong một thẻ được lưu trữ như một

$ pip install beautifulsoup4
92 trong Beautiful Soup. Nó có một số phương thức hữu ích như
1
02 để thay thế văn bản trong thẻ. Bạn cũng có thể chuyển đổi một
$ pip install beautifulsoup4
92 thành unicode bằng cách sử dụng
1
04

Beautiful Soup cũng cho phép bạn truy cập các bình luận trong một trang web. Nhận xét này được lưu trữ dưới dạng một đối tượng

$ pip install beautifulsoup4
94, về cơ bản cũng là
$ pip install beautifulsoup4
92

Bạn đã học về các đối tượng

$ pip install beautifulsoup4
84 trong phần trước. Nó được sử dụng để đại diện cho toàn bộ tài liệu. Vì nó không phải là một đối tượng thực tế, nên nó không có bất kỳ tên hoặc thuộc tính nào

Get Title, Heading và Link

Bạn có thể trích xuất tiêu đề trang và dữ liệu khác rất dễ dàng bằng Beautiful Soup. Vui lòng trích xuất trang Wikipedia về Python. Trước tiên, bạn phải lấy đánh dấu được đánh dấu của trang web bằng cách sử dụng mã sau đây dựa trên hướng dẫn về Yêu cầu mô-đun để truy xuất các trang web

1
1
3
$ pip install beautifulsoup4
1_______10
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
9
1
8
1
0
$ pip install beautifulsoup4
00

Bây giờ bạn đã tạo súp, bạn có thể lấy tiêu đề của trang web bằng cách sử dụng mã sau

1
$ pip install beautifulsoup4
02
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
04
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
9
$ pip install beautifulsoup4
07
1
0
$ pip install beautifulsoup4
09
1
2
1
4
$ pip install beautifulsoup4
12
1
6
$ pip install beautifulsoup4
14

Bạn có thể trích xuất các thông tin khác của trang web như tiêu đề hoặc đoạn văn đầu tiên, các lớp của chúng, hoặc thuộc tính

1
08

1
$ pip install beautifulsoup4
16
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
18
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
9
$ pip install beautifulsoup4
21
1
0
$ pip install beautifulsoup4
23
1
2
1
4
$ pip install beautifulsoup4
26
1
6
$ pip install beautifulsoup4
28
1
7
1
9
$ pip install beautifulsoup4
31
$ python setup.py install
1
$ pip install beautifulsoup4
33
$ python setup.py install
3
$ python setup.py install
5
$ pip install beautifulsoup4
36
$ python setup.py install
6
$ pip install beautifulsoup4
38
$ python setup.py install
8
1
0
1
1
1
2
1
3
1
4
1
5
1
6
1
7
1
8
1
9
$ pip install beautifulsoup4
16
$ pip install beautifulsoup4
01
$ pip install beautifulsoup4
02

Tương tự như vậy, bạn có thể lặp qua tất cả các liên kết hoặc tiêu đề con trong một tài liệu bằng mã sau

1
$ pip install beautifulsoup4
04
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
06
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
08
$ pip install beautifulsoup4
9
$ pip install beautifulsoup4
10

Điều hướng trên DOM

Bạn có thể điều hướng trên cây DOM bằng tên thẻ thông thường. Việc móc nối các thẻ tên có thể giúp bạn điều hướng cây sâu hơn. Ví dụ, bạn có thể lấy liên kết đầu tiên trong đoạn đầu của trang Wikipedia cho trước bằng

1
09. Tất cả các liên kết trong đoạn văn bản đầu tiên đều có thể được truy cập bằng
1
10

Bạn cũng có thể truy xuất tất cả các lỗi của thẻ thành một danh sách sử dụng

1
11. To have been cons at a tools only, you can use
1
12. Bạn cũng có thể bật qua các dấu hiệu của một thẻ bằng thuộc tính
1
13

Cả

1
13 và
1
15 chỉ hữu ích khi bạn muốn truy cập trực tiếp hoặc cấp đầu tiên của một thẻ. To have been all of cons, you may be used by
1
16

_______2

$ pip install beautifulsoup4
12
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
14
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
9
$ pip install beautifulsoup4
17
1
0
$ pip install beautifulsoup4
19
1
2
1
4
$ pip install beautifulsoup4
22
1
6
$ pip install beautifulsoup4
24
1
7
$ pip install beautifulsoup4
26
1
9
$ pip install beautifulsoup4
28
$ python setup.py install
1
$ pip install beautifulsoup4
30
$ python setup.py install
3
$ pip install beautifulsoup4
28
$ python setup.py install
5
$ pip install beautifulsoup4
30
$ python setup.py install
6
$ pip install beautifulsoup4
28_______68
$ pip install beautifulsoup4
38

Bạn cũng có thể truy cập vào phần tử cha của một phần tử bằng thuộc tính

1
17. Tương tự như vậy, bạn có thể truy cập vào tất cả các phần tử cha của một phần tử bằng cách sử dụng thuộc tính
1
18. Phần tử cha của thẻ cấp cao nhất
1
19 chính là đối tượng
$ pip install beautifulsoup4
84, và cha của nó là Không có

1
$ pip install beautifulsoup4
40
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
42
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
9
$ pip install beautifulsoup4
45
1
0
$ pip install beautifulsoup4
47
1
2
$ pip install beautifulsoup4
42
1
4
$ pip install beautifulsoup4
42
1
6
$ pip install beautifulsoup4
42
1
7
$ pip install beautifulsoup4
55
1
9
$ pip install beautifulsoup4
57
$ python setup.py install
1
$ pip install beautifulsoup4
59

Bạn có thể truy cập phần tử của anh chị em trước và sau của một phần tử bằng các thuộc tính của

1
21 và
1
22

Đối với hai phần tử để được là anh chị em, chúng nhất thiết phải có cùng một phần tử cha. Điều này có nghĩa là đầu tiên của một phần tử sẽ không có anh chị em trước. Tương tự, phần tử con cuối cùng của một phần tử sẽ không có anh chị em kế tiếp. Trong các trang web có thật, các anh chị em đi trước và tiếp theo của một phần tử có thể sẽ là một ký tự xuống dòng

You can also it through all anh chị em của một phần tử bằng

1
23 and
1
24

1
$ pip install beautifulsoup4
61
$ pip install beautifulsoup4
1
$ pip install beautifulsoup4
63
$ pip install beautifulsoup4
2
$ pip install beautifulsoup4
9
$ pip install beautifulsoup4
66
1
0
$ pip install beautifulsoup4
68
1
2
1
4
$ pip install beautifulsoup4
71
1
6
$ pip install beautifulsoup4
73
1
7
1
9
$ pip install beautifulsoup4
76
$ python setup.py install
1
$ pip install beautifulsoup4
78

Bạn có thể tìm thấy phần tử ngay sau phần tử hiện tại bằng thuộc tính

1
25. Để truy cập vào phần tử xuất hiện ngay trước phần tử hiện tại, hãy sử dụng thuộc tính
1
26

Tương tự như vậy, bạn có thể lặp lại tất cả các phần tử trước và sau phần tử hiện tại bằng cách sử dụng

1
27 và
1
28 tương ứng

tóm tắt

Sau khi đọc xong hướng dẫn này, bạn đã hiểu rõ hơn về sự khác biệt chính giữa các trình phân tích cú pháp HTML khác nhau. Bây giờ bạn còn có thể điều hướng trên một trang web và trích xuất các dữ liệu quan trọng. Điều này có thể hữu ích khi bạn muốn phân tích tất cả các chủ đề hoặc liên kết trên một trang web nhất định

Trong phần tiếp theo của loạt bài này, bạn sẽ được học cách sử dụng thư viện Beautiful Soup để tìm kiếm và sửa đổi DOM

Chủ Đề