Web Scraping là một phương pháp trích xuất dữ liệu hữu ích từ một trang web bằng các chương trình máy tính mà không phải thực hiện thủ công. Dữ liệu này sau đó có thể được xuất và sắp xếp theo thứ tự cho các mục đích khác nhau. Một số nơi phổ biến mà Web Scraping được sử dụng là Trang web phân tích & nghiên cứu thị trường, Công cụ so sánh giá, Công cụ tìm kiếm, Thu thập dữ liệu cho các dự án AI/ML, v.v.
Hãy tìm hiểu sâu và tìm kiếm một trang web. Trong bài viết này, chúng tôi sẽ sử dụng trang web GeekforGeek và trích xuất tiêu đề của tất cả các bài báo có trên Trang chủ bằng cách sử dụng tập lệnh Python.
Nếu bạn để ý, có hàng ngàn bài viết trên trang web và để trích xuất tất cả chúng, chúng tôi sẽ phải quét qua tất cả các trang để chúng tôi không bỏ sót bài nào.
Trang chủ GeekforGeek
Cạo nhiều trang của một trang web bằng Python
Bây giờ, có thể phát sinh nhiều trường hợp khác nhau mà bạn có thể muốn lấy dữ liệu từ nhiều trang từ cùng một trang web hoặc nhiều URL khác nhau và viết mã thủ công cho từng trang web là một công việc tốn thời gian và tẻ nhạt. Ngoài ra, nó xác định tất cả các nguyên tắc cơ bản của tự động hóa. Tât nhiên.
Để giải quyết vấn đề chính xác này, chúng ta sẽ thấy hai kỹ thuật chính sẽ giúp chúng ta trích xuất dữ liệu từ nhiều trang web
- cùng một trang web
- URL trang web khác nhau
Tiếp cận
Cách tiếp cận của chương trình sẽ khá đơn giản và sẽ dễ hiểu hơn ở định dạng ĐIỂM
- Chúng tôi sẽ nhập tất cả các thư viện cần thiết
- Thiết lập chuỗi URL của chúng tôi để tạo kết nối bằng thư viện yêu cầu
- Phân tích cú pháp dữ liệu có sẵn từ trang đích bằng trình phân tích cú pháp của thư viện BeautifulSoup
- Từ trang mục tiêu, Xác định và Trích xuất các lớp và thẻ chứa thông tin có giá trị đối với chúng tôi
- Tạo nguyên mẫu cho một trang bằng vòng lặp và sau đó áp dụng nó cho tất cả các trang
ví dụ 1. Lặp qua các số trang
số trang ở dưới cùng của trang web GeekforGeek
Hầu hết các trang web có các trang được đánh số từ 1 đến N. Điều này giúp chúng tôi thực sự đơn giản để lặp qua các trang này và trích xuất dữ liệu từ chúng vì các trang này có cấu trúc tương tự nhau. Ví dụ
chú ý phần cuối cùng của URL – trang/4/
Tại đây, chúng ta có thể xem chi tiết trang ở cuối URL. Sử dụng thông tin này, chúng ta có thể dễ dàng tạo vòng lặp for lặp qua bao nhiêu trang tùy thích [bằng cách đặt trang/[i]/ vào chuỗi URL và lặp từ “i” cho đến N] và lấy tất cả dữ liệu hữu ích từ chúng. Đoạn mã sau sẽ giúp bạn hiểu rõ hơn về cách cạo dữ liệu bằng cách sử dụng Vòng lặp For trong Python
con trăn
import
requests
from
bs4
import
BeautifulSoup as bs
URL
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds1
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds3
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds5
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds6_______0_______0
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds8
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds9
import
0
import
2_______0_______0 import
4import
5import
6
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
import
8import
9_______22_______0requests
1requests
2
requests
4requests
5requests
6requests
7
đầu ra
Đầu ra cho đoạn mã trên
Bây giờ, sử dụng đoạn mã trên, chúng ta có thể lấy tiêu đề của tất cả các bài viết bằng cách kẹp các dòng đó bằng một vòng lặp
con trăn
import
requests
from
bs4
import
BeautifulSoup as bs
URL
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
from
7
from
9 bs4
0bs4
1 bs4
2bs4
3bs4
4requests
0bs4
6bs4
7
bs4
8bs4
9
import
0_______21_______1
import
0_______21_______3
import
0_______0_______3
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
import
8import
9 BeautifulSoup as bs
0BeautifulSoup as bs
1import
9 BeautifulSoup as bs
3import
0import
0_______0_______6
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds8_______0_______9
import
0
import
0_______21_______2
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
import
4import
5import
65 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds0
import
8import
9requests
0requests
1requests
2
import
0_______23_______9 URL
7bs4
1 bs4
2bs4
3requests
6requests
0
5 I waited 5 seconds 4 I waited 4 seconds 5 I waited 5 seconds03
bs4
7