Trăn cạo

Trang web điều khiển đang trở thành một trong những chủ đề nóng nhất trên thế giới, rất nhiều lợi ích của việc điều khiển trang web ví dụ như tự động hóa thao tác trên trang web (đăng nhập, tải dữ liệu, cập nhật dữ liệu…) .  

Đây là lý do tại sao các công ty nằm trong danh sách Fortune 500 như Walmart, CNN, Target và Amazon, google… sử dụng công cụ này để đi trước và tự động hóa việc thu thập dữ liệu

Đó là công cụ tăng trưởng bước đầu và là một trong những bí mật được giữ kín nhất của họ

… Và nó cũng có thể dễ dàng là của bạn

Chào mừng bạn đến với trang web điều khiển bằng Python với BeautifulSoup và Selenium

Khóa học này đang là xu hướng và mới nhất hiện có

Trong khóa học này, bạn sẽ học cách thu thập dữ liệu và tự động hóa từ một số trang web nổi tiếng nhất, bao gồm

  • Zalo
  • Google
  • Twitter
  • Facebook
  • Shopee
  • amazon

Khi kết thúc khóa học này, bạn có thể tự động hóa bất kỳ nhiệm vụ nào trên trang web bất kỳ bằng cách sử dụng ngôn ngữ lập trình python với các thư viện tôi hướng dẫn và hơn thế nữa

Ngoài ra, hãy tự làm quen với một số kỹ thuật làm việc với trang web phổ biến nhất và trau dồi kỹ năng lập trình Python của bạn khi bạn đang học

  • Trước tiên, hãy khám phá những kiến ​​thức cơ bản python, khám phá cấu trúc của một trang web
  • Tiếp theo, tôi sẽ làm cho bạn hiểu cơ bản về BeautifulSoup, Selenium và hệ thống phân tích cú pháp LXML, đồng thời mở rộng quy mô để phát triển một thuật toán toán cao nhằm thu thập dữ liệu từ bất kỳ bảng nào trực tuyến và từ bất kỳ bảng nào trực tuyến
  • Thứ ba, tìm hiểu về Selenium để xử lý các trang web chạy bằng JavaScript và sử dụng các chức năng của Selenium để tương tác với các trang
  • Kết hợp các khái niệm của BeautifulSoup và Selenium để tạo ra các công cụ hiệu quả nhất để tự động hóa với một số trang web khó khăn nhất
  • Cuối cùng, hãy học cách trang web tự động bằng cách chạy chương trình của bạn vào một thời điểm cụ thể mỗi ngày

Điều gì làm cho khóa học này khác với những khóa học khác, và tại sao bạn nên đăng ký ngay và luôn?

  • Đầu tiên, đây là khóa học mới nhất hiện tại
  • Thứ hai, đây là khóa học dựa trên dự án thực tế nhất mà bạn sẽ tìm thấy, nơi chúng tôi sẽ tìm hiểu nhiều trang web nổi tiếng nhất của Internet
  • Bạn sẽ được hướng dẫn chi tiết nghiệp vụ từng bước về cách trở thành một người điều khiển web chuyên nghiệp
  • Bạn sẽ học cách sử dụng Selenium để làm việc và tôi có thể chắc chắn với bạn rằng, bạn sẽ không tìm thấy bất kỳ hướng dẫn nào trên mạng hướng dẫn bạn cách thực sự sử dụng Selenium như tôi sẽ làm trong khóa học này.
  • Bạn sẽ học cách tạo một web kịch bản hoàn toàn tự động chạy theo định mức mà không cần bất kỳ sự phản hồi nào từ bạn
  • Hỗ trợ 24/07 qua nhóm zalo, giảng viên sẵn sàng hướng dẫn bạn làm các dự án phục vụ công việc của bạn dù học phí chỉ bằng một bữa nhậu
  • Bảo đảm hoàn tiền trong 15 ngày bởi PYAN

Vì vậy, cho dù bạn là dân văn phòng, thường xuyên phải làm việc với các trang web hay ứng dụng hay cũng có thể là một nhà phát triển web đang tìm cách tự động hóa các tác vụ hoặc một người yêu thích dữ liệu hay thích .  

Khóa học này cung cấp trình bày chuyên sâu về các khái niệm cơ bản về python cũng như cách chúng ta tự động hóa nó với ngôn ngữ lập trình python

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 nào 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
from bs4 import BeautifulSoup
2
3
soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")

Đố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 có hai phiên bản, trình phân tích cú pháp HTML và trình phân tích cú pháp XML

$ 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_______11_______
$ 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
soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")
2
$ pip install beautifulsoup4
6
3
$ 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ỏ 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.

$ pip install beautifulsoup4
91,
$ pip install beautifulsoup4
92,
$ pip install beautifulsoup4
84 và
$ pip install beautifulsoup4
94

Đố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 vài phương thức hữu ích như
1
02 để thay thế văn bản trong một 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

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_______11_______
from bs4 import BeautifulSoup
3
$ pip install beautifulsoup4
9_______2_______8
1
0
from bs4 import BeautifulSoup
0

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
from bs4 import BeautifulSoup
2
2
from bs4 import BeautifulSoup
4
3
___
$ pip install beautifulsoup4
9
from bs4 import BeautifulSoup
7
1
0
from bs4 import BeautifulSoup
9
1
2
1
4
2
2
1
6
2
4

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
2
6
2
2
8
3
$ pip install beautifulsoup4
9
3
1
1
0
3
3
1
2
1
4
3
6
1
6
3
8
1
7
1
9
soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")
1
$ python setup.py install
1
soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")
3
$ python setup.py install
3
$ python setup.py install
5
soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")
6
$ python setup.py install
6
soup = BeautifulSoup("<html><p>This is <b>invalid HTML</p></html>", "html.parser")
8
$ 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
2
6
$ 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
2
$ pip install beautifulsoup4
06
3
$ 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 đầ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 tool item 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 can be used toác tính
1
16

1
$ pip install beautifulsoup4
12
2
$ pip install beautifulsoup4
14
3
$ 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
$ python setup.py install
8
$ 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
2
$ pip install beautifulsoup4
42
3
$ 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_______2_______9_______0_______57_______6_______1_______0_______

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

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 thông qua tất cả các anh chị em của một phần tử bằng

1
23 và
1
24

1
$ pip install beautifulsoup4
61_______11_______
$ pip install beautifulsoup4
63
3
$ 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_______6_______1_______0_______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