Cách cạo toàn bộ trang web Python

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 bs4import BeautifulSoup as bs

 

URL

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0
5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
1

 

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
3
5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0
5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
5

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
6_______0_______0
5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
8
5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
9import0

 

import2_______0_______0 import4import5import6

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0 import8import9_______22_______0requests1requests2

 

requests4requests5requests6requests7

đầ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 bs4import BeautifulSoup as bs

 

URL

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0 from7

 

from9 bs40bs41 bs42bs43bs44requests0bs46bs47

bs48bs49

import0_______21_______1

import0_______21_______3

 

import0_______0_______3

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0 import8import9 BeautifulSoup as bs0BeautifulSoup as bs1import9 BeautifulSoup as bs3import0

import0_______0_______6

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0
5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
8_______0_______9import0

 

import0_______21_______2

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0 import4import5import6
5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
0import8import9requests0requests1requests2

 

import0_______23_______9 URL7bs41 bs42bs43requests6requests0

5
I waited 5 seconds
4
I waited 4 seconds
5
I waited 5 seconds
03bs47

Bạn có thể cạo toàn bộ trang web không?

Kiểm tra HTML của trang web mà bạn muốn thu thập dữ liệu. Truy cập URL của trang web bằng mã và tải xuống tất cả nội dung HTML trên trang . Định dạng nội dung đã tải xuống thành định dạng có thể đọc được. Trích xuất thông tin hữu ích và lưu nó ở định dạng có cấu trúc.

Quét web bằng Python có hợp pháp không?

Không chia sẻ bất hợp pháp nội dung đã tải xuống. Việc thu thập dữ liệu cho mục đích cá nhân thường được chấp nhận, ngay cả khi đó là thông tin có bản quyền, vì nó có thể thuộc điều khoản sử dụng hợp lý của luật sở hữu trí tuệ .

Chủ Đề