Làm cách nào để trích xuất dữ liệu HTML bằng Python?
Quét web là thu thập thông tin theo chương trình từ các trang web khác nhau. Mặc dù có nhiều thư viện và khung bằng nhiều ngôn ngữ khác nhau có thể trích xuất dữ liệu web, Python từ lâu đã là một lựa chọn phổ biến vì có rất nhiều tùy chọn để quét web Show Bài viết này sẽ cung cấp cho bạn một khóa học cấp tốc về quét web bằng Python với Beautiful Soup - một thư viện Python phổ biến để phân tích cú pháp HTML và XML Quét web có đạo đứcQuét web phổ biến và cung cấp cho chúng tôi dữ liệu như chúng tôi sẽ nhận được với API. Tuy nhiên, với tư cách là những công dân tốt của Internet, chúng tôi có trách nhiệm tôn trọng chủ sở hữu trang web mà chúng tôi thu thập từ. Dưới đây là một số nguyên tắc mà một trình quét web nên tuân thủ
Tổng quan về Beautiful SoupNội dung HTML của các trang web có thể được phân tích cú pháp và loại bỏ bằng Beautiful Soup. Trong phần sau, chúng tôi sẽ đề cập đến các chức năng hữu ích cho việc quét các trang web Điều làm cho Beautiful Soup trở nên hữu ích là vô số chức năng mà nó cung cấp để trích xuất dữ liệu từ HTML. Hình ảnh dưới đây minh họa một số chức năng chúng ta có thể sử dụng Hãy thực hành và xem cách chúng ta có thể phân tích cú pháp HTML bằng Beautiful Soup. Hãy xem xét trang HTML sau được lưu vào tệp dưới dạng 1
Các đoạn mã sau được thử nghiệm trên 2. Bạn có thể cài đặt mô-đun 3 bằng cách gõ lệnh sau vào terminal
Tệp HTML 1 cần được chuẩn bị. Điều này được thực hiện bằng cách chuyển tệp tới hàm tạo 3, hãy sử dụng trình bao Python tương tác cho việc này, vì vậy chúng tôi có thể in ngay nội dung của một phần cụ thể của trang
Bây giờ chúng tôi có thể sử dụng Beautiful Soup để điều hướng trang web của mình và trích xuất dữ liệu Từ đối tượng soup được tạo ở phần trước, hãy lấy thẻ tiêu đề của 1Đây là bảng phân tích của từng thành phần chúng tôi đã sử dụng để lấy tiêu đề Beautiful Soup mạnh mẽ vì các đối tượng Python của chúng tôi phù hợp với cấu trúc lồng nhau của tài liệu HTML mà chúng tôi đang tìm kiếm Để lấy nội dung của thẻ 7 đầu tiên, hãy nhập nội dung nàyĐể lấy tiêu đề trong thẻ nội dung HTML (được biểu thị bằng lớp "tiêu đề"), hãy nhập nội dung sau vào thiết bị đầu cuối của bạn Đối với các tài liệu HTML được lồng sâu, việc điều hướng có thể nhanh chóng trở nên tẻ nhạt. May mắn thay, Beautiful Soup có chức năng tìm kiếm nên chúng tôi không phải điều hướng để truy xuất các phần tử HTML Tìm kiếm các phần tử của thẻPhương thức 8 lấy thẻ HTML làm đối số chuỗi và trả về danh sách các phần tử khớp với thẻ được cung cấp. Ví dụ: nếu chúng tôi muốn tất cả các thẻ 9 trong 1
Chúng tôi sẽ xem danh sách các thẻ 9 này dưới dạng đầu ra
Đây là bảng phân tích từng thành phần mà chúng tôi đã sử dụng để tìm kiếm thẻ Chúng tôi cũng có thể tìm kiếm các thẻ của một lớp cụ thể bằng cách cung cấp đối số 2. Beautiful Soup sử dụng 2 vì 4 là từ khóa dành riêng trong Python. Hãy tìm kiếm tất cả 9 thẻ có lớp "phần tử"
Vì chúng tôi chỉ có hai liên kết với lớp "phần tử", bạn sẽ thấy kết quả này
Điều gì sẽ xảy ra nếu chúng tôi muốn tìm nạp các liên kết được nhúng bên trong các thẻ 9? . Nó hoạt động giống như 8 nhưng nó trả về phần tử phù hợp đầu tiên thay vì một danh sách. Nhập cái này vào vỏ của bạnHàm 8 và 8 cũng chấp nhận biểu thức chính quy thay vì chuỗi. Đằng sau hậu trường, văn bản sẽ được lọc bằng cách sử dụng phương pháp 2 của biểu thức chính quy đã biên dịch. Ví dụ
Danh sách khi lặp lại, tìm nạp các thẻ bắt đầu bằng ký tự 3 bao gồm và 7Hãy xem hướng dẫn thực hành, thực tế của chúng tôi để học Git, với các phương pháp hay nhất, tiêu chuẩn được ngành chấp nhận và bao gồm bảng gian lận. Dừng các lệnh Git trên Google và thực sự tìm hiểu nó
Chúng tôi đã đề cập đến những cách phổ biến nhất để nhận thẻ và thuộc tính của chúng. Đôi khi, đặc biệt là đối với các trang web ít động hơn, chúng tôi chỉ muốn văn bản từ đó. Hãy xem làm thế nào chúng ta có thể có được nó Lấy toàn bộ văn bảnHàm 5 lấy tất cả văn bản từ tài liệu HTML. Hãy lấy tất cả văn bản của tài liệu HTML
Đầu ra của bạn phải như thế này 0Đôi khi các ký tự dòng mới được in, vì vậy đầu ra của bạn cũng có thể trông như thế này 1Bây giờ chúng ta đã biết cách sử dụng Beautiful Soup, hãy tạo một trang web Súp đẹp trong hành động - Tìm kiếm danh sách sáchBây giờ chúng ta đã thành thạo các thành phần của Beautiful Soup, đã đến lúc áp dụng kiến thức của chúng ta. Hãy xây dựng một trình cạp để trích xuất dữ liệu từ https. //sách. để cạo. com/ và lưu nó vào tệp CSV. Trang web chứa dữ liệu ngẫu nhiên về sách và là một không gian tuyệt vời để kiểm tra các kỹ thuật quét web của bạn Đầu tiên, tạo một tệp mới có tên 6. Hãy nhập tất cả các thư viện chúng tôi cần cho tập lệnh này 2Trong các mô-đun được đề cập ở trên
Bạn đã cài đặt sẵn 1 và 8, 9 và 0 là các gói tích hợp sẵn trong Python. Bạn sẽ cần cài đặt trực tiếp mô-đun 7 như thế này 3Trước khi bắt đầu, bạn cần hiểu cách cấu trúc HTML của trang web. Trong trình duyệt của bạn, hãy truy cập http. //sách. để cạo. com/catalogue/trang-1. html. Sau đó nhấp chuột phải vào các thành phần của trang web cần cạo và nhấp vào nút kiểm tra để hiểu phân cấp của các thẻ như hình bên dưới Điều này sẽ hiển thị cho bạn HTML cơ bản cho những gì bạn đang kiểm tra. Hình ảnh sau đây minh họa các bước này Từ việc kiểm tra HTML, chúng tôi tìm hiểu cách truy cập URL của sách, ảnh bìa, tiêu đề, xếp hạng, giá và nhiều trường khác từ HTML. Hãy viết một hàm cạo một mục sách và trích xuất dữ liệu của nó Dòng cuối cùng của đoạn trích trên trỏ đến một hàm để ghi danh sách các chuỗi đã loại bỏ vào tệp CSV. Hãy thêm chức năng đó ngay bây giờ Vì chúng tôi có một chức năng có thể quét một trang và xuất sang CSV, chúng tôi muốn một chức năng khác thu thập thông tin qua trang web được phân trang, thu thập dữ liệu sách trên mỗi trang Để làm điều này, hãy xem URL mà chúng tôi đang viết trình quét này cho 4Yếu tố thay đổi duy nhất trong URL là số trang. Chúng tôi có thể định dạng URL động để nó trở thành URL gốc 5URL được định dạng chuỗi này với số trang có thể được tìm nạp bằng phương pháp 7. Sau đó chúng ta có thể tạo một đối tượng 3 mới. Mỗi khi chúng tôi lấy đối tượng súp, sự hiện diện của nút "tiếp theo" sẽ được kiểm tra để chúng tôi có thể dừng ở trang cuối cùng. Chúng tôi theo dõi bộ đếm cho số trang tăng thêm 1 sau khi cạo trang thành côngHàm ở trên, 9, được gọi đệ quy cho đến khi hàm 0 trả về 1. Tại thời điểm này, mã sẽ cạo phần còn lại của trang web và thoátĐối với phần cuối cùng của câu đố, chúng tôi bắt đầu quy trình cạo. Chúng tôi xác định 2 và gọi 9 để lấy dữ liệu. Điều này được thực hiện theo khối 4 6Nếu bạn muốn tìm hiểu thêm về khối 4, hãy xem hướng dẫn của chúng tôi về cách thức hoạt động của nóBạn có thể thực thi tập lệnh như được hiển thị bên dưới trong thiết bị đầu cuối của mình và nhận đầu ra dưới dạng 7 8Dữ liệu được cạo có thể được tìm thấy trong thư mục làm việc hiện tại dưới tên tệp 6. Đây là một mẫu nội dung của tập tin 9Làm tốt lắm. Nếu bạn muốn xem toàn bộ mã cạp, bạn có thể tìm thấy nó trên GitHub Phần kết luậnTrong hướng dẫn này, chúng ta đã học được quy tắc viết web scraper tốt. Sau đó, chúng tôi đã sử dụng Beautiful Soup để trích xuất dữ liệu từ tệp HTML bằng cách sử dụng các thuộc tính đối tượng của Beautiful Soup và đó là các phương thức khác nhau như 8, 8 và 5. Sau đó, chúng tôi đã xây dựng một trình thu thập thông tin để truy xuất danh sách sách trực tuyến và xuất sang CSV Quét web là một kỹ năng hữu ích giúp thực hiện nhiều hoạt động khác nhau như trích xuất dữ liệu như API, thực hiện QA trên trang web, kiểm tra các URL bị hỏng trên trang web, v.v. Máy cạp tiếp theo bạn sẽ xây dựng là gì? |