Vì các biểu thức chính quy làm tôi sợ, tôi đang cố gắng tìm cách xóa tất cả các thẻ HTML và phân giải các thực thể HTML khỏi một chuỗi bằng Python.Lọc ra các thẻ HTML và phân giải các thực thể trong python
Trả lời
Làm cách nào phân tích cú pháp dữ liệu HTML và trích xuất dữ liệu với sự trợ giúp của trình phân tích cú pháp?
Tôi muốn thử một cái gì đó giống như tác giả mô tả trong chapter 8.3 in the Dive Into Python book
khi tôi đồng ý với Lucas rằng biểu thức thông thường không phải là tất cả những gì đáng sợ, tôi vẫn nghĩ rằng bạn nên đi với một phân tích cú pháp HTML chuyên ngành. Điều này là do tiêu chuẩn HTML đủ lông (đặc biệt nếu bạn muốn phân tích các trang "HTML" tùy ý được lấy ra khỏi Internet) mà bạn cần phải viết nhiều mã để xử lý các trường hợp góc. Có vẻ như là python includes one out of the box.
Bạn cũng nên xem python bindings for TidyLib để có thể xóa HTML bị hỏng, làm cho tỷ lệ thành công của bất kỳ phân tích cú pháp HTML nào cao hơn nhiều.
Bạn có thể cần điều gì đó phức tạp hơn biểu thức chính quy. các trang web thường có dấu ngoặc nhọn mà không phải là một phần của thẻ, như thế này:
<div>5 < 7</div>
Tước thẻ với regex sẽ trả về chuỗi "5" và đối xử với
< 7</div>
như một thẻ đơn và loại bỏ nó ra.
Tôi khuyên bạn nên tìm kiếm mã đã viết để thực hiện điều này cho bạn. Tôi đã tìm kiếm và tìm thấy điều này: http://zesty.ca/python/scrape.html Nó cũng có thể giải quyết các thực thể HTML.
Sử dụng BeautifulSoup! Đó là hoàn hảo cho điều này, nơi bạn có đánh dấu đến của đức tính đáng ngờ và cần phải nhận được một cái gì đó hợp lý ra khỏi nó. Chỉ cần vượt qua trong văn bản gốc, trích xuất tất cả các thẻ chuỗi và tham gia chúng.
và mã để làm điều đó sẽ là: '' .join (BeautifulSoup (giá trị, conversionEntities = BeautifulSoup.HTML_ENTITIES) .findAll (text = True)) –
Regular expressions lxml.html.clean không đáng sợ, nhưng viết regexes của riêng bạn để dải HTML là một con đường chắc chắn điên rồ (và nó cũng không hoạt động). Đi theo con đường của sự khôn ngoan, và sử dụng một trong nhiều thư viện phân tích cú pháp HTML tốt.
Ví dụ của Lucas cũng bị hỏng vì "phụ" không phải là phương thức của chuỗi Python. Bạn sẽ phải "nhập lại", sau đó gọi re.sub (pattern, repl, string). Nhưng đó không phải là ở đây cũng không có, như câu trả lời đúng cho câu hỏi của bạn không liên quan đến việc viết bất kỳ regexes.
Nhìn vào số lượng người có ý nghĩa đang thể hiện trong các câu trả lời khác ở đây, tôi muốn nói rằng việc sử dụng regex có lẽ không phải là ý tưởng tốt nhất cho tình huống của bạn. Hãy tìm một cái gì đó đã thử và thử nghiệm, và đối xử với câu trả lời trước đây của tôi như là một minh chứng rằng regexes không cần phải là rằng đáng sợ.
nếu bạn sử dụng django bạn cũng có thể sử dụng http://docs.djangoproject.com/en/dev/ref/templates/builtins/#striptags ;)
- 1. jquery html() dải ra các thẻ script
- 2. Giải mã các thực thể HTML trong android
- 3. Cách giải mã các thực thể HTML số trong PHP
- 4. jQuery - thẻ script trong HTML được phân tách ra bởi jQuery và không thực hiện
- 5. Lọc ra các thẻ neo trong một chuỗi
- 6. Làm thế nào để tạo ra các thực thể HTML đầu ra của Beautiful Soup?
- 7. Giải mã tất cả các thực thể HTML
- 8. Chuyển đổi phân số thành các thực thể html
- 9. Parse XML với (X) các thực thể HTML
- 10. Lọc ra các chuỗi thoát ANSI
- 11. HTML Parser xác thực thẻ
- 12. Làm thế nào để đối phó với các thực thể HTML trong Rails to_json đầu ra?
- 13. Xóa tất cả thẻ javascript và thẻ kiểu từ html bằng python và mô-đun lxml
- 14. Phân tích cú pháp thẻ html bằng Python
- 15. Làm thế nào để các thực thể HTML unescape trong một chuỗi trong Python 3.1?
- 16. Thẻ HTML để ngăn thẻ HTML được thực thi?
- 17. Lưu trữ và thoát thẻ Django và bộ lọc trong các mẫu Django
- 18. RegEx phù hợp với các thẻ HTML và giải nén văn bản
- 19. Nokogiri (RubyGem): Tìm kiếm và thay thế các thẻ HTML
- 20. PHP, SimpleXML, giải mã các thực thể trong CDATA
- 21. Độ phân giải SVG chuyển sang màu đen khi có thẻ BASE trong trang HTML?
- 22. Preg trận văn bản trong php giữa các thẻ html
- 23. html mẫu thẻ và jquery
- 24. Python cProfile: cách lọc ra các cuộc gọi cụ thể từ dữ liệu lược tả?
- 25. Làm cách nào để giải mã các thực thể HTML trong C++?
- 26. Làm cách nào để mã hóa/giải mã các thực thể HTML trong Ruby?
- 27. Tôi làm cách nào để giải mã các thực thể HTML?
- 28. Vệ sinh HTML và đóng các thẻ chưa hoàn thành
- 29. Có thể biên dịch mã Coffeescript trong các thẻ script trong các tệp html không?
- 30. Thực hiện các thực thể html trong thẻ meta có ảnh hưởng đến việc lập chỉ mục không?
Trên thực tế liên kết Dive Into Python nên [này] (http: // diveintopython.org/html_processing/index.html) –