Python biểu thức chính quy HTML
Lượng thông tin có sẵn trên internet cho con người là đáng kinh ngạc. Tuy nhiên, nếu dữ liệu này không ở dạng API REST chuyên dụng, thì việc truy cập theo chương trình có thể gặp khó khăn. Kỹ thuật thu thập và xử lý dữ liệu thô từ internet được gọi là web scraping. Có một số cách sử dụng để quét web trong phát triển phần mềm. Dữ liệu được thu thập thông qua quét web có thể được áp dụng trong nghiên cứu thị trường, tạo khách hàng tiềm năng, trí thông minh cạnh tranh, so sánh giá sản phẩm, theo dõi tâm lý người tiêu dùng, kiểm toán thương hiệu, AI và máy học, tạo bảng công việc, v.v. Show Sử dụng trình phân tích cú pháp HTML được tạo riêng để phân tích cú pháp các trang HTML đơn giản hơn so với phân tích cú pháp bằng logic lập trình được viết tùy chỉnh. Có một số công cụ có sẵn để quét web bằng trình phân tích cú pháp HTML. Beautiful Soup là một trong những thư viện như vậy hoạt động với trình phân tích cú pháp HTML mà bạn chọn để quét web. Một số thích phân tích cú pháp các trang HTML bằng regex, vì nó nhẹ và đi kèm với nhiều ngôn ngữ lập trình—bạn không phải cài đặt bất kỳ phụ thuộc riêng biệt nào. Ngoài ra, nếu bạn xử lý các trang HTML đơn giản, được định dạng tốt, thì việc triển khai giải pháp phân tích cú pháp dựa trên regex khá đơn giản Biểu thức chính quy (thường được viết tắt là biểu thức chính quy) là một chuỗi các chữ cái chỉ định mẫu tìm kiếm văn bản. Cụm từ thông dụng được sử dụng trong phân tích từ vựng, hộp thoại tìm kiếm và thay thế của bộ xử lý văn bản, chức năng tìm kiếm và thay thế của trình soạn thảo văn bản và các công cụ xử lý văn bản như sed và Trong bài viết này, bạn sẽ tìm hiểu cách phân tích cú pháp HTML bằng regex trong Python. Trong hướng dẫn này, bạn sẽ tải xuống nội dung của trang web, tìm kiếm dữ liệu cần thiết và khám phá một số trường hợp sử dụng cụ thể để phân tích nội dung HTML bằng regex. Sau đó, bạn sẽ xem xét một số thách thức liên quan đến việc sử dụng biểu thức chính quy để phân tích cú pháp HTML tùy ý và tìm hiểu về các giải pháp thay thế Phân tích cú pháp với RegexHỗ trợ Regex được cung cấp bởi phần lớn các ngôn ngữ lập trình có mục đích chung, bao gồm Python, C, C++, Java, Rust và JavaScript, nguyên bản hoặc thông qua các thư viện Đoạn mã sau là một cú pháp regex đơn giản trong Python có thể được sử dụng để tìm mẫu chuỗi “ Như bạn có thể thấy trong ảnh chụp màn hình, có nhiều số liệu thống kê được công bố trên trang PyPI—tổng số dự án, bản phát hành, người dùng, v.v. Trong số này, bạn chỉ muốn trích xuất thông tin về tổng số dự án. Nếu bạn xem mã nguồn của tệp html mà bạn đã tải xuống trước đó, 4, bạn sẽ nhận thấy rằng chỉ số này được đưa vào như một phần của thẻ 7 nằm trong thẻ 8
Bạn cũng sẽ nhận thấy rằng có nhiều trường hợp của từ “dự án” trong 4. Thách thức là chỉ trích xuất số liệu thống kê được yêu cầu—trong trường hợp này là 410.645 dự án. Để làm như vậy, hãy sao chép và dán đoạn mã sau vào tệp Python có tên 0
Ở đây, 1 được gọi với URL trang web PyPI làm đầu vào. Đến lượt phương thức này sử dụng phương thức 2 để đọc nội dung trang web và trả về các byte html cho phương thức gọi. 1 sau đó sử dụng mẫu biểu thức chính quy để lấy danh sách tất cả các kết quả phù hợp với mẫu được cung cấp. Mẫu biểu thức chính quy, 4, là chìa khóa để tìm tổng số dự án
Vì kiểu trả về của 8 là một danh sách, nên việc lặp lại danh sách được thực hiện để in số liệu thống kê của dự án ra đầu ra của thiết bị đầu cuốiKhi bạn chạy tập lệnh, bạn sẽ thấy một đầu ra như thế này
Trích xuất liên kếtBây giờ bạn đã hiểu kiến thức cơ bản về phân tích cú pháp HTML bằng biểu thức chính quy, hãy xem liệu bạn có thể lập trình để trích xuất các liên kết (bất kỳ URL được tham chiếu https hoặc http nào) từ cùng một trang không. Bạn có tất cả sự trợ giúp cần thiết từ các phần trước; Bạn có thể coi đây như một bài tập để thực hiện, hoặc tham khảo mã nguồn bên dưới để biết câu trả lời
Khi bạn sao chép và dán đoạn mã trên vào một tệp có tên 3 và chạy tập lệnh bằng cách sử dụng lệnh 4, bạn sẽ nhận được danh sách các liên kết URL được tham chiếu từ trang PyPILọc thẻ trốngHTML hỗ trợ các thẻ trống—nghĩa là các thẻ không được có bất kỳ thẻ lồng nhau hoặc nút con nào. Các thẻ trống này còn được gọi là các phần tử trống. Chúng thường có thẻ bắt đầu nhưng không cần thẻ kết thúc như các thẻ không trống. Ngay cả khi bạn đã chỉ định thẻ kết thúc trong trang HTML cho các thẻ trống như vậy, trình duyệt sẽ không báo lỗi. Bạn có thể tham khảo bài viết này để biết thêm thông tin và xem danh sách đầy đủ các thẻ trống trong HTML Giả sử bạn muốn lọc ra các thẻ trống này khỏi tệp HTML đã tải xuống của trang PyPI. Làm thế nào bạn sẽ đi về nó?
Chạy lệnh sau 0Thao tác này sẽ tạo hai tệp trong thư mục mà bạn đã đặt và thực thi tập lệnh Python ở trên. Nội dung tải xuống ban đầu của trang PyPI được chứa trong 4 và nội dung HTML đã sửa đổi (sau khi lọc ra các thẻ trống) được chứa trong 7Lọc nhận xétSử dụng phương pháp tương tự, bạn có thể lọc nhận xét từ trang HTML. Nhận xét trong HTML được biểu diễn như sau 1Bạn có thể thử điều này cho chính mình dựa trên những gì bạn đã học được cho đến nay. Hoặc, nếu bạn muốn mã nguồn cho trường hợp sử dụng này, hãy sao chép và dán tập lệnh Python bên dưới vào tệp có tên 8 2Sau đó chạy nó bằng lệnh 9. Tập lệnh này lọc ra các nhận xét HTML từ nội dung trang web đã tải xuốngRegex thất bại như thế nào với HTML tùy ýCho đến giờ, bạn đã khám phá cách regex có thể được sử dụng để phân tích một trang HTML. Tuy nhiên, nếu bạn cần phân tích cú pháp HTML tùy ý bằng các thẻ không đều hoặc không có định dạng chuẩn, bạn sẽ thấy biểu thức chính quy đó bỏ sót một số thông tin quan trọng Tạo một tệp html mẫu, 0, với nội dung sau 3Lưu ý rằng thẻ 1 của 8 thứ ba được lồng với thẻ con, 7 và thẻ trống, 4. Nếu mục tiêu của bạn là trích xuất tất cả thông tin có sẵn như là một phần của tất cả các thẻ 1, thì định dạng HTML như vậy sẽ là một thách thứcSao chép và dán đoạn mã sau vào tệp có tên 6 4Cả hai tệp này— 0 và 6—phải có trong cùng một thư mục. Bây giờ hãy chạy như sau 5Bạn sẽ nhận được một đầu ra như thế này 6Lưu ý rằng không thể truy xuất thông tin trong thẻ 1 thứ ba bằng cách sử dụng trình phân tích cú pháp regex vì nội dung trang không chuẩn và có định dạng khác với các thẻ 1 khác—biểu thức regex hiện tại không thể xử lý thông tin đó. Bạn có thể giới thiệu các quy tắc tùy chỉnh để xử lý các trường hợp như vậy, nhưng không có giải pháp được đề xuất tiêu chuẩn nào, điều này gây khó khăn cho việc phân tích cú pháp bằng biểu thức chính quy. Để đơn giản hóa mọi thứ, bạn có thể sử dụng giải pháp thay thế như ScrapingBee, BeautifulSoup, JSoup hoặc SeleniumScrapingBee là một nền tảng tìm kiếm trên web có thể giúp bạn thực hiện các dự án có mục đích chung—chẳng hạn như trích xuất các bài đánh giá hoặc lời chứng thực từ một trang web, tìm kiếm bất động sản hoặc theo dõi giá—tất cả mà không bị chặn bởi tổ chức lưu trữ hoặc quản lý trang web. Nó cũng có thể trợ giúp với các trường hợp quét web nâng cao hơn, như trích xuất thông tin từ các phần tử lồng nhau, trích xuất thuộc tính hoặc trích xuất các trang kết quả của công cụ tìm kiếm. API ScrapingBee hoạt động xuất sắc để giúp quá trình trích xuất dữ liệu của bạn diễn ra dễ dàng nhằm cải thiện năng suất của nhóm bạn. Ngoài ra, đối với những người không phải là lập trình viên, ScrapingBee có tính năng quét web không cần mã, theo đó ngay cả người dùng doanh nghiệp cũng có thể dễ dàng quét các trang web mục tiêu của họ. Bạn có thể xem blog này để tìm hiểu thêm về quét web không có mã Phần kết luậnQuét web cực kỳ hữu ích trong việc trích xuất thông tin có thể giúp doanh nghiệp của bạn ra quyết định hoặc thậm chí tự động hóa các chiến lược kinh doanh nhất định. Ví dụ: định giá sản phẩm của bạn một cách cạnh tranh bằng cách so sánh giá sản phẩm của bạn với giá trên trang web của đối thủ cạnh tranh không cần phải thực hiện thao tác thủ công Trong bài viết này, bạn đã tìm hiểu về các trường hợp sử dụng của web scraping trong một số miền. Bạn đã tự thực hiện phân tích cú pháp HTML bằng cách tải xuống nội dung từ một trang web và trích xuất thông tin như liên kết và mẫu chuỗi từ trang đó bằng biểu thức chính quy. Bạn cũng đã học cách lọc các thẻ và nhận xét trống Regex có thể tuyệt vời để phân tích cú pháp HTML, nhưng nó có những hạn chế. Để phân tích cú pháp và trích xuất dữ liệu từ HTML tùy ý, hãy cân nhắc sử dụng giải pháp thay thế như ScrapingBee để thực hiện mọi việc nhanh chóng và dễ dàng Tất cả các mã nguồn từ bài viết này có thể được tìm thấy trong repo GitHub này Rajkumar VenkatasamyRajkumar có gần mười sáu năm kinh nghiệm trong ngành công nghiệp phần mềm với tư cách là nhà phát triển, người lập mô hình dữ liệu, người thử nghiệm, trưởng dự án. Hiện tại, anh là kiến trúc sư chính tại một MNC Bạn có thể sử dụng regex trên HTML không?Mặc dù sử dụng regex để phân tích cú pháp HTML có một số hạn chế, nhưng nó cho phép bạn xây dựng một giải pháp nhanh chóng và phục vụ tốt cho các trường hợp sử dụng như phân tích cú pháp các trang HTML đơn giản, lọc ra một thẻ/nhóm thẻ nhất định khỏi trang HTML hoặc để trích xuất một văn bản cụ thể
Làm cách nào tôi có thể sử dụng regex trong Python?Python có một mô-đun tên là re để hoạt động với RegEx . Đây là một ví dụ. nhập lại mẫu = '^a. s$' test_string = 'vực thẳm' kết quả = lại. khớp (mẫu, test_string) nếu kết quả. print("Tìm kiếm thành công. ") khác. print("Tìm kiếm không thành công. ")
làm gì '. ' Có nghĩa là trong regex?Đó là một cái nhìn tiêu cực, có nghĩa là để biểu thức khớp, phần bên trong (?. ) không được khớp . Trong trường hợp này, regex khớp với http. // chỉ khi nó không được theo sau bởi tên máy chủ hiện tại (đại khái, xem nhận xét của Thilo).
Python có chấp nhận regex không?Mô-đun RegEx
. Python has a built-in package called re , which can be used to work with Regular Expressions. |