Trong bài viết này, chúng tôi sẽ xây dựng một chương trình cho phép bạn quét hoặc lấy dữ liệu từ một trang web bằng tập lệnh Python. Phương pháp thu thập dữ liệu này được gọi là quét web. Gỡ bỏ web là tất cả về lập trình bằng cách sử dụng Python hoặc bất kỳ ngôn ngữ lập trình nào khác để tải xuống, làm sạch và sử dụng dữ liệu từ một trang web. Hầu hết các trang web không muốn bạn cạo dữ liệu của họ và để tìm hiểu điều gì là hợp pháp và được phép cạo, các trang web có một trang dành riêng hiển thị chi tiết về các điểm cuối được phép. Đính kèm tệp robots.txt vào cuối bất kỳ liên kết nào để tìm hiểu về các điểm cuối được phép. Ví dụ: hãy sử dụng . https://news.ycombinator.com/robots.txt Kết quả sẽ như thế này với tệp văn bản dưới đây: Ảnh chụp màn hình cho biết những điểm cuối nào chúng tôi được phép và không được phép lấy từ trang web YCombinator. Độ trễ thu thập thông tin có nghĩa là thời gian tạm dừng khi quét dữ liệu từ trang web bằng các chương trình, do đó không làm quá tải máy chủ của họ và làm chậm trang web vì liên tục quét. Trong bài tập này, chúng tôi lược bỏ trang chủ của nội dung tin tức, điều này chúng tôi có thể thực hiện tùy theo tác nhân người dùng. Bắt đầu Trình quét web Python yêu cầu hai mô-đun cần thiết để quét dữ liệu: Súp đẹp Yêu cầu Súp đẹp Beautiful Soup là một thư viện Python để trích xuất dữ liệu từ các tệp HTML. Nó sửa đổi tệp bằng trình phân tích cú pháp, biến dữ liệu thành tài liệu có giá trị và tiết kiệm cho các lập trình viên hàng giờ làm việc thủ công và lặp đi lặp lại. Yêu cầu Thư viện HTTP yêu cầu là để tải xuống các tệp HTML bằng cách sử dụng liên kết đến trang web với hàm số. .get() Tạo Web Scraper Bây giờ đến thực tế của dự án này. Tạo một thư mục mới và trong đó, một tệp sẽ chứa tất cả các tập lệnh cho chương trình quét web. Sao chép và dán mã sau: yc_web_page = response.text print(yc_web_page) # app.py import requests response = requests.get( 'https://news.ycombinator.com/news' ) Đoạn mã trên thực hiện những việc sau: Nhập khẩu mô-đun requests Sử dụng biến phản hồi, các yêu cầu được đính kèm với chức năng tải xuống các tệp HTML từ liên kết của trang web được cung cấp .get() Đọc nội dung của trang web với .text Nếu bạn chạy mã này bằng lệnh python và nó không cung cấp cho bạn bất kỳ đầu ra nào, điều đó có nghĩa là hai mô-đun đã nhập cần được cài đặt. app.py Chạy các lệnh sau để cài đặt các mô-đun. pip install beautifulsoup4 pip3 install requests Kết quả của mã nguồn sẽ giống như sau: Tiếp theo, hãy cập nhật tệp với phần còn lại của mã bằng cách sử dụng súp đẹp: app.py yc_web_page = response.text article_title = article_tag.get_text() result = { } print(result) # main.py import requests from bs4 import BeautifulSoup # add this response = requests.get( 'https://news.ycombinator.com/news' ) # add this soup = BeautifulSoup(yc_web_page, 'html.parser' ) article_tag = soup.find(name= "a" , class_= 'titlelink' ) article_link = article_tag.get( 'href' ) article_upvote = soup.find(name= "span" , class_= "score" ).get_text() "title" : article_title, "link" : article_link, "point" : article_upvote Thực hiện theo đoạn mã ở trên bằng cách thực hiện như sau :: Nhập chức năng BeautifulSoup từ mô-đun bs4 Tiếp theo, sử dụng súp biến để phân tích cú pháp tài liệu từ bằng cách sử dụng chức năng BeautifulSoup và để lấy các tệp HTML yc_web_page html.parser Trước khi xem qua phần còn lại của mã, hãy mở trình duyệt web của chúng tôi bằng liên kết được cung cấp trong .get() Tiếp theo, nhấp chuột phải vào trang và nhấp vào kiểm tra để xem tab phần tử của trang tin tức . YCombinator Trang web của chúng tôi sẽ trông như thế này: Với Beautiful Soup, chúng tôi có thể nhắm mục tiêu các phần tử cụ thể trên trang với tên lớp của chúng: Bằng cách gán biến article_tag, mọi phần tử trang đều có tên thẻ bằng cách sử dụng chức năng với tên của phần tử, và có dấu gạch dưới. Điều này được thực hiện để ngăn chặn việc ghi đè lớp trong phần tử trên trang web find() thẻ class_ Bây giờ, chúng tôi muốn trích xuất một trong các tiêu đề liên kết của sử dụng hàm số article_tag .get_text() Tiếp theo, trích xuất liên kết của sử dụng thuộc tính với hàm số article_tag href .get() Điều tương tự cũng áp dụng cho biến, trong đó tên thẻ, , và tên lớp được sử dụng để trích xuất điểm cho mỗi liên kết bài viết article_upvote <span> Tạo một kết quả biến sẽ hiển thị dữ liệu được trích xuất dưới dạng từ điển với cặp khóa và giá trị In ra kết quả cuối cùng Với toàn bộ tập lệnh được viết, trang của chúng tôi sẽ lấy dữ liệu từ trang chủ tin tức của YCombinator và trông giống như sau: Sự kết luận Bài viết này đã hướng dẫn bạn cách sử dụng trình quét web Python để trích xuất dữ liệu từ một trang web. Ngoài ra, các chức năng của việc sử dụng công cụ quét web là nó tiết kiệm thời gian và công sức trong việc tạo ra các tập dữ liệu lớn nhanh hơn thay vì thủ công. Tìm hiểu thêm Tài liệu về Súp đẹp Yêu cầu tài liệu