Scrape la gi
Web ScrapingWeb Scraping là ứng dụng thu thập dữ liệu được sử dụng để trích xuất dữ liệu từ các trang web. Phần mềm Web Scaping có thể truy cập trực tiếp vào World Wide Web bằng Giao thức HTTP hoặc thông qua trình duyệt web. Mặc dù người dùng phần mềm có thể thực hiện việc quét web theo cách thủ công, nhưng thuật ngữ này thường đề cập đến các quy trình tự động được thực hiện bằng cách sử dụng bot hoặc trình thu thập thông tin web. Đây là một hình thức sao chép, trong đó dữ liệu cụ thể được thu thập và sao chép từ web, thường vào cơ sở dữ liệu cục bộ trung tâm hoặc bảng tính, để truy xuất hoặc phân tích sau này. Show
Kiến trúcHình ảnh từ Wikipedia Mặc dù khá dễ dàng để xây dựng một web crawler đơn giản có đủ các chức năng thu thập và lưu trữ dữ liệu. Tuy nhiên để đảm bảo có được hiệu năng cao có thể xử lý rất nhiều tác vụ song song hệ thống Web crawler cần được thiết kế với kiến trúc tối ưu nhất. Hình trên trích từ Wikipedia thể hiện kiến trúc thường được sử dụng cho các web crawler mà thứ cải thiện đáng kể hiệu năng hệ thống này với các kiến trúc đơn giản là bộ lập lịch và khả năng xử lý đa luồng Các vấn đề cần giải quyết để hệ thống Web Scraping hoạt động hiệu quảKhông phải hệ thống nào cũng cho phép người dùng sử dụng thoải mái dữ liệu từ trang web của họ. Vậy nên khi xây dựng hệ thống Web Scraping cần quan tâm đến các vấn đề như sau: Đặt Rate Limit cho mỗi địa chỉ IPDo đặc thù của việc thu thập dữ liệu được thực hiện tự động nên lượng request được tạo nhiều một cách đột biến nếu so sánh với các ca sử dụng của người dùng thông thường bởi vậy máy chủ có thể phát hiện và ngừng cung cấp cho địa chỉ IP đó hoặc có thể block vĩnh viễn. Cách giải quyết:
Yêu cầu đăng nhập để có thể truy cậpHTTP là một giao thức không trạng thái vốn có nghĩa là không có thông tin nào được lưu giữ từ yêu cầu này sang yêu cầu tiếp theo, mặc dù hầu hết các ứng dụng HTTP (như trình duyệt) sẽ lưu trữ những thứ như cookie. Điều này có nghĩa là crawler thường không cần định danh chính nó nếu nó đang truy cập một trang trên một trang web công khai. Nhưng nếu trang đó được bảo vệ bằng thông tin đăng nhập, thì crawler phải gửi một số thông tin nhận dạng cùng với mỗi yêu cầu để truy cập tài nguyên. Điều này sẽ không ngăn cản việc thu thập dữ liệu, nhưng ít nhất sẽ cung cấp cho phía có dữ liệu đang được thu thập một số thông tin chi tiết về những ai đang thu thập dữ liệu từ họ. Cách giải quyết:
Thay đổi HTML thường xuyênTrình quét thường xuyên dựa vào việc tìm kiếm các mẫu trong đánh dấu HTML của một trang web và sau đó sẽ sử dụng các mẫu đó làm manh mối để giúp tập lệnh của trình thu thập tìm thấy dữ liệu phù hợp trong trang web HTML. Nếu cấu trúc trang web thay đổi thường xuyên hoặc hoàn toàn không nhất quán, crawler khó có thể hoạt động hiệu quả. Đôi khi, chỉ cần thay đổi lớp và id trong HTML (và các tệp CSS tương ứng) là đủ để phá vỡ hầu hết các trình thu thập. Cách giải quyết:
Chuyển một số dữ liệu về dạng hình ảnh
Sử dụng CAPTCHA khi cần thiếtCAPTCHA được thiết kế đặc biệt để tách con người khỏi máy tính bằng cách trình bày những vấn đề mà con người thường thấy dễ dàng, nhưng máy tính lại gặp khó khăn. Do đó các trình thu thập khó có thể vượt qua những phần này. Cách giải quyết:
Tạo bẫy các công cụ thu thậpPhương pháp này được thực hiện bằng cách thêm các thành phần mà người dùng dễ dàng bỏ qua hoặc không nhìn thấy như một thẻ a hoặc button có style là display:none. Đây là các nút, đường dẫn mà con người sẽ không bao giờ truy cập, nhưng một trình thu thập đang nhấp vào mọi liên kết trên một trang có thể tình cờ xem được, từ đó cản trở quá trình thu thập dữ liệu bằng cách tạo ra chuỗi truy cập vô tận, ..... Cách giải quyết:
Một số thư viện/framework của Python thường được sử dụng nhằm mục đích thu thập dữ liệuBeautiful Soup (BS4)Beautiful Soup (BS4) là một thư viện phân tích cú pháp có thể sử dụng các parsers khác nhau từ đó có thể trích xuất dữ liệu từ các tài liệu HTML và XML một cách dễ dàng. Về mặc định, Beautiful Soup sử dụng parser cơ bản của Python. Mặc dù khá linh hoạt và dễ sử dụng, parser này là có hiệu năng khá kém do tốc độ xử lý khá chậm. Tin tốt là bạn hoàn toàn có thể hoán đổi trình phân tích cú pháp của nó bằng một trình phân tích cú pháp nhanh hơn nếu bạn cần cải thiện nhiều tốc độ của ứng dụng. Sau khi phân tích các HTML cũng như XML đầu vào, Beautiful Soup cho phép chúng ta dễ dàng di chuyển, tìm kiếm, thay đổi cũng như trích xuất dữ liệu từ cây cú pháp. Cú pháp rõ ràng linh hoạt tương tự cách chúng ta tương tác với DOM bằng các thư viện JavaScript là một trong những lý do khiến Beautiful Soup trở thành một trong những công cụ phổ biến nhất cho việc thu thập dữ liệu web, bên cạnh sự mạnh mẽ của nó. SeleniumSelenium là một trong những công cụ kiểm thử phần mềm tự động mã nguồn mở mạnh nhất hiện nay cho việc kiểm thử ứng dụng Web. Selenium script có thể chạy được trên hầu hết các trình duyệt như IE, Mozilla FireFox, Chrome, Safari, Opera; và hầu hết các hệ điều hành như Windows, Mac, Linux. Về cơ bản mà nói, quá trình scraping cũng tương tự như quá trình kiểm thử ứng dụng tự động bởi chúng đều thực hiện một chuỗi thao tác tương tác với các trang web một cách tự động và liên tục. Bởi vậy, Selenium thường xuyên được sử dụng nhất là khi cần thu thập từ các trang web SPA - thứ mà khó có thể thu thập được dữ liệu từ nó nếu như phần mã JavaScript của chúng không được thực thi. ScrapyVề mặt kỹ thuật, Scrapy không phải một thư viện mà là một framework phục vụ mục đích thu thập dữ liệu. Điều đó có nghĩa là bạn có thể sử dụng nó để quản lý các yêu cầu, duy trì các phiên của người dùng, theo dõi chuyển hướng và xử lý các pipelines đầu ra. Nó cũng có nghĩa là bạn có thể hoán đổi các mô-đun riêng lẻ với các thư viện duyệt web Python khác. Ví dụ: nếu bạn cần chèn Selenium để quét các trang web động, bạn có thể làm điều đó Tổng kếtBài viết này trình bày một số kiến thức cơ bản về Web Scraping và các vấn đề cần giải quyết để hệ thống Web Scraping hoạt động hiệu quả cũng như giới thiệu qua về một số thư viện/framework của Python thường được sử dụng nhằm mục đích thu thập dữ liệu. Có thể thấy rằng trong thời điểm hiện tại, dữ liệu đóng vai trò tối quan trọng trong kỷ nguyên số. Việc tận dụng được nguồn tài nguyên này giúp chúng ta có thể tạo ra rất nhiều giá trị hữu ích cho bản thân và mọi người xung quanh. Tuy nhiên để có thể xây dựng và vận hành một hệ thống thu thập dữ liệu web một cách hiệu quả, người phát triển không chỉ cần tập trung đến các vấn đề về công nghệ mà cần quan tâm cả đến các vấn đề về tính hợp pháp do không phải loại dữ liệu nào có thể được thu thập. Bài viết đến đây là kết thúc cảm ơn mọi người đã giành thời gian đọc. |