Quét web mô tả khả năng trích xuất hoặc "cạo" dữ liệu từ internet bằng chương trình tự động. Các chương trình này tiến hành truy vấn web và truy xuất dữ liệu HTML, sau đó được phân tích cú pháp để lấy thông tin cần thiết Show
Cho dù bạn cần thu thập một lượng lớn dữ liệu, dữ liệu từ nhiều nguồn hay dữ liệu không có sẵn thông qua API, việc tự động trích xuất thông tin này có thể giúp bạn tiết kiệm rất nhiều thời gian và công sức Trong hướng dẫn này, bạn sẽ học cách sử dụng thư viện Parsel Python để tạo các tập lệnh quét web của riêng bạn. Cụ thể, bạn sẽ học cách phân tích tài liệu HTML bằng Bộ chọn và cách trích xuất dữ liệu từ đánh dấu HTML bằng CSS và XPath. Bạn cũng sẽ tìm hiểu về cách xóa các phần tử bằng cách sử dụng đối tượng bộ chọn. Đến cuối bài viết, bạn sẽ có thể tạo các tập lệnh cạo của riêng mình và các biểu thức phức tạp để truy xuất dữ liệu từ một trang web bằng thư viện Parsel Triển khai ParselĐể sử dụng thư viện Parsel, trước tiên bạn phải cài đặt nó trong môi trường ảo; Để cài đặt 4, hãy chạy lệnh sau trong thiết bị đầu cuối của bạn
Tiếp theo, tạo một môi trường ảo mới có tên 5
Sau đó sử dụng lệnh sau để kích hoạt môi trường ảo của bạn
Bạn sẽ thấy 6 trong thiết bị đầu cuối, điều này cho biết rằng môi trường ảo đã được kích hoạt. Bây giờ hãy cài đặt thư viện Parsel trong môi trường ảo mới tạo bằng lệnh sau
Để lấy nội dung trang web, bạn cũng cần cài đặt thư viện yêu cầu HTTP
Sau khi cài đặt cả hai thư viện 7 và 8, bạn đã sẵn sàng bắt đầu viết mãBắt đầu với ParselTại đây, bạn sẽ tạo một tệp mới có tên my_scraper. py, nhập các mô-đun thích hợp, sau đó sử dụng Yêu cầu để lấy mã HTML của trang web. Bạn sẽ sử dụng trang web 9 để chạy tập lệnh cạo trên
Để tham khảo, bạn sẽ xem mã HTML của trang web bằng cách sử dụng 0
Nhập mã sau vào my_scraper mới của bạn. tập tin py
Tạo bộ chọnBây giờ bạn sẽ tạo một thể hiện của lớp 1 tích hợp bằng cách sử dụng phản hồi được trả về bởi thư viện Yêu cầu. Lớp Selector cho phép bạn trích xuất dữ liệu từ các tài liệu HTML hoặc XML bằng cách sử dụng CSS và XPath bằng cách lấy một đối số bắt buộc có tên là 2. Sau khi tạo đối tượng bộ chọn, tài liệu HTML được phân tích cú pháp theo cách mà sau đó bạn có thể truy vấn nó bằng các biểu thức CSS và XPath. Nối tệp của bạn với dòng mã sau để tạo đối tượng bộ chọn
Để chơi với lớp Bộ chọn của Parsel, bạn cần chạy Python ở chế độ tương tác. Điều này rất quan trọng vì nó giúp bạn không phải viết nhiều câu lệnh in chỉ để kiểm tra tập lệnh của mình. Để nhập REPL, hãy chạy tệp Python có cờ -i trong thiết bị đầu cuối
Sau khi chạy lệnh trên, bạn sẽ thấy 3 trong thiết bị đầu cuối của mình, điều này cho biết bạn đã vào chế độ tương tác thành côngTrích xuất văn bản bằng bộ chọn CSSNhập mã sau vào trình bao để trích xuất tiêu đề của trang
Tại đây, một đối số truy vấn được chuyển đến hàm 4, có thể là tên của thẻ, lớp hoặc id. Bạn đã chọn thẻ tiêu đề từ tài liệu HTML trong đoạn mã trước, đoạn mã này trả về một đối tượng SelectorList; . Trong trường hợp này, chỉ có một thẻ tiêu đề. Nếu bạn nhìn vào đầu ra, bạn sẽ nhận thấy rằng nó không tiết lộ nội dung của thẻ tiêu đề. Thư viện Parsel bao gồm các hàm có tên là 5 và 6 để hiển thị nội dung của thẻ tiêu đề. Các hàm này tuần tự hóa phần tử Bộ chọn để chỉ hiển thị nội dung của đối tượngChạy dòng mã sau trong trình bao
Bạn sẽ thấy đầu ra sau 0Phần tử giả CSS 7 được sử dụng để chọn nút 8 của một phần tử. Tương tự, bạn có thể sử dụng 9 cho lớp, 0 để chọn id và 1 để tìm kiếm bằng thuộc tính của thẻ và giá trị của nó. Dưới đây là một số ví dụ cho mỗi; Để nhận tất cả các thẻ 2 với lớp 3 và chỉ nhận nút văn bản bên trong, hãy chạy mã này 1Để lấy thẻ đầu tiên có id 4 và chỉ nhận nút văn bản bên trong, hãy chạy lệnh sau 2Cuối cùng, để lấy tất cả các thẻ có thuộc tính 5 với giá trị 2, hãy chạy mã này 3Điều đáng chú ý là hàm 5 tuần tự hóa phần tử đầu tiên trong đối tượng SelectorList, trong khi hàm 6 đi qua từng Bộ chọn trong SelectorList và trả về danh sách có dữ liệu được tuần tự hóa cho từng Bộ chọnTrích xuất văn bản bằng bộ chọn XPathTrong Parsel, bộ chọn XPath cũng có thể được sử dụng để trích xuất văn bản. Bộ chọn CSS cực kỳ mạnh mẽ và hiệu quả và chúng thường dễ đọc hơn bộ chọn XPath. Sự lựa chọn giữa XPath và CSS là vấn đề sở thích cá nhân. Điểm khác biệt chính là các bộ chọn CSS chỉ có thể di chuyển trong chuỗi phân cấp, nhưng các bộ chọn XPath có thể di chuyển lên và xuống trong cấu trúc phân cấp đánh dấu Nhập đoạn mã sau vào trình bao để nhận tất cả các thẻ div có lớp 9 trên trang web 4Bạn sẽ nhận được một cái gì đó như thế này sau khi chạy đoạn mã trên 5Trong XPath, mọi truy vấn phải bắt đầu bằng 0 và phải thêm 0 để vào phần tử con. Thuộc tính và giá trị được truyền trong ____12_______2, với ____12_______3 ở phía trước tên thuộc tính. Để mở rộng truy vấn trên, hãy nhập mã sau vào trình bao. Điều này trả về tất cả các câu trích dẫn trong thẻ 4 có lớp 2 trong thẻ 6 có lớp 7 6Bạn sẽ thấy đầu ra sau 7Văn bản bên trong của phần tử được lấy bằng phương pháp 8. Chức năng này cũng có thể được sử dụng để khớp văn bảnĐể có được tất cả các trích dẫn của “Albert Einstein”, hãy nhập truy vấn Parsel sau vào trình bao 8Trong truy vấn ở trên, bạn có thể thấy rằng mình đang sử dụng XPath để điều hướng lên cấu trúc phân cấp. Đầu tiên, bạn chọn các yếu tố có tác giả “Albert Einstein”, sau đó bạn đi lên cấu trúc phân cấp để xem tất cả các trích dẫn. Cuối cùng, hàm 6 được sử dụng để tuần tự hóa đối tượng bộ chọn để chỉ hiển thị câu lệnh trích dẫn. Đây là điểm khác biệt quan trọng nhất giữa bộ chọn CSS và XPathLoại bỏ các yếu tốThư viện Parsel cũng có chức năng loại bỏ các phần tử khỏi đối tượng bộ chọn. Cần thận trọng khi sử dụng hàm 0 vì một khi các phần tử đã bị xóa, chúng không thể được phục hồi. Tuy nhiên, hàm 1 có thể hữu ích để giảm kích thước của phản hồi trong bộ nhớTrước tiên, bạn sẽ phải kiểm tra xem đối tượng selector có một ____12_______6 với lớp ____15_______3 hay không 9Đoạn mã trên sẽ tạo ra đầu ra sau 0Bây giờ bạn có thể loại bỏ 6 với lớp 3 bằng cách sử dụng hàm 1 1Sau khi chạy đoạn mã trước, kiểm tra đối tượng bộ chọn bằng đoạn mã sau sẽ dẫn đến một danh sách trống vì phần tử đã bị xóa khỏi đối tượng bộ chọn 2Tạo tập lệnh cạo web của bạnCho đến bây giờ, bạn đã làm việc trong REPL để kiểm tra các lựa chọn CSS và XPath của Parsel. Trong phần này, bạn sẽ tạo một chương trình trích xuất từng trích dẫn từ trang web và lưu trữ các trích dẫn đó trong một tệp văn bản được định dạng đẹp mắt Tại đây, bạn sẽ cạo từng phần trích dẫn một và lấy văn bản bên trong, tác giả và thẻ của trích dẫn. Vì bạn đang lưu trữ tất cả các trích dẫn trong tệp văn bản, nên bạn sẽ phải mở tệp ở chế độ 7 bằng cách sử dụng khối 8. Nhập mã sau vào tệp Python của bạn 3Sử dụng đoạn mã trên, thông tin báo giá sẽ được trích xuất và lưu dưới dạng tệp văn bản. Cần lưu ý rằng truy vấn XPath chứa một dấu chấm ( 9) ở đầu. Điều này rất quan trọng vì nó được sử dụng để truy vấn phiên bản của Bộ chọn theo kiểu tương đối hơn là tìm kiếm toàn bộ trang webKhi bạn chạy mã này, một dấu ngoặc kép tuyệt vời. txt sẽ được tạo sau khi trích xuất thành công các trích dẫn
Nếu bạn thấy một tệp có nội dung như trên, xin chúc mừng bạn đã tạo trình quét web đầu tiên của mình bằng thư viện Parsel. Parsel có nhiều chức năng hữu ích; Phần kết luậnMặc dù các thư viện như Beautiful Soup, Scrapy và Selenium có thể quá mức cần thiết, nhưng Parsel là một lựa chọn tuyệt vời để quét web đơn giản. Các phương thức và Bộ chọn đơn giản của Parsel cung cấp tất cả các chức năng cần thiết cho các tập lệnh cạo cơ bản, trong khi các thư viện khác chứa một loạt các tính năng mà bạn sẽ không bao giờ sử dụng trong một tập lệnh cạo đơn giản—chẳng hạn như tự động hóa trình duyệt, bảng điều khiển telnet, ghi nhật ký và email. Trong bài đăng này, bạn đã tìm hiểu về các tính năng chính của thư viện Parsel, bao gồm lớp Bộ chọn và hai phương thức để trích xuất các phần tử từ đối tượng bộ chọn của bạn. CSS và XPath. Bạn cũng đã xem cách bộ tuần tự hóa hoạt động 5 và 6 trích xuất dạng có thể đọc được của các phần tử và tìm kiếm văn bản được bảo hiểm cũng như thứ tự phân cấp phần tử. Cuối cùng, bạn đã sử dụng thư viện Parsel và các khả năng xử lý tệp của Python để phát triển một trình quét web chính thức trích xuất tất cả các trích dẫn trong một tệp văn bản. Bây giờ bạn đã học được những điều cơ bản, hãy dành chút thời gian để chơi với thư viện Parsel bằng cách phát triển các công cụ dọn dẹp phức tạp hơn
Làm cách nào để trích xuất thẻ HTML trong Python?Gửi yêu cầu HTTP GET tới URL của trang web mà bạn muốn thu thập, yêu cầu này sẽ phản hồi bằng nội dung HTML . Chúng ta có thể làm điều này bằng cách sử dụng thư viện Request của Python. Tìm nạp và phân tích dữ liệu bằng Beautifulsoup và duy trì dữ liệu trong một số cấu trúc dữ liệu như Dict hoặc List.
Làm cách nào để tìm nạp nội dung HTML bằng Python?Giải pháp đơn giản nhất là như sau. . yêu cầu nhập khẩu. in (yêu cầu. nhận được (url = 'https. //Google. com'). chữ). nhập urllib. yêu cầu như r. trang = r. urlopen('https. //Google. com'). nhập urllib. yêu cầu như r. trang = r. urlopen('https. //Google. com'). <. loại tài liệu html>. |