Hướng dẫn html2image - html2image
Show HTML2Image
HTML2Image là gói Python nhẹ, hoạt động như một trình bao bọc xung quanh chế độ không đầu của trình duyệt web hiện có để tạo hình ảnh từ URL và từ các chuỗi hoặc tệp HTML+CSS. Gói này đã được thử nghiệm trên Windows, Ubuntu (máy tính để bàn và máy chủ) và macOS. Nó hiện đang trong một công việc trong giai đoạn tiến bộ. Nếu bạn gặp bất kỳ vấn đề hoặc khó khăn nào trong khi sử dụng nó, hãy thoải mái mở một vấn đề trên trang GitHub của dự án này. Phản hồi cũng được chào đón! Nguyên tắcHầu hết các trình duyệt web đều có chế độ không đầu, đó là một cách để chạy chúng mà không hiển thị bất kỳ giao diện đồ họa nào. Chế độ không đầu chủ yếu được sử dụng cho các thử nghiệm tự động nhưng cũng có ích nếu bạn muốn chụp ảnh màn hình các trang web là bản sao chính xác của những gì bạn sẽ thấy trên màn hình nếu bạn đang sử dụng trình duyệt. Tuy nhiên, vì mục đích chụp ảnh màn hình, chế độ không đầu không thuận tiện để sử dụng. HTML2Image nhằm mục đích ẩn các bất tiện của các chế độ không đầu của trình duyệt trong khi thêm các tính năng hữu ích như cho phép tạo hình ảnh từ ít như một chuỗi. Để biết thêm thông tin về các chế độ không đầu:
Cài đặtHTML2Image được xuất bản trên PYPI và có thể được cài đặt thông qua PIP: pip install --upgrade html2image Ngoài gói này, ít nhất một trong các trình duyệt sau phải được cài đặt trên máy của bạn:must be installed on your machine :
Cách sử dụngĐầu tiên, nhập gói và khởi tạo nófrom html2image import Html2Image hti = Html2Image()Nhiều đối số có thể được chuyển cho hàm tạo (bấm để mở rộng):
Example: hti = Html2Image(size=(500, 200)) Bạn cũng có thể thay đổi các giá trị này sau: Sau đó chụp ảnh màn hìnhPhương pháp hti = Html2Image(size=(500, 200))8 là cơ sở của gói này, hầu hết thời gian, bạn sẽ không cần phải sử dụng bất cứ thứ gì khác. Nó có thể chụp ảnh màn hình của rất nhiều thứ:
Và bạn cũng có thể (tùy chọn):
N.B. : Phương pháp hti = Html2Image(size=(500, 200))8 trả về một danh sách chứa (các) đường dẫn của ảnh chụp màn hình.list containing the path(s) of the screenshot(s) it took. Một vài ví dụ
hti.screenshot(url='https://www.python.org', save_as='python_org.png')
html = """
hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )
hti.screenshot(other_file='star.svg')
hti.screenshot(other_file='star.svg', size=(500, 500)) Bấm để hiển thị tất cả các hình ảnh được tạo bằng tất cả các mã trên thay đổi thư mục mà các ảnh chụp màn hình được lưu
hti = Html2Image(output_path='my_screenshot_folder') HOẶC hti.output_path = 'my_screenshot_folder' N.B. : Đường dẫn đầu ra sẽ được thay đổi cho tất cả các ảnh chụp màn hình trong tương lai. Sử dụng danh sách thay cho bất kỳ tham số nào trong khi sử dụng phương thức |
tranh luận | sự mô tả | thí dụ |
---|---|---|
-H, - -Help | Hiển thị thông báo trợ giúp | html = """6 |
-U, --urls | Ảnh chụp màn hình một danh sách các URL | html = """7 |
-H, - -html | Ảnh chụp màn hình một danh sách các tệp HTML | html = """8 |
-C, - -css | Đính kèm một tệp CSS vào các tệp HTML | html = """9 |
-O, -người khác | Ảnh chụp màn hình một danh sách các tệp loại "Khác" | hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )0 |
-S,--save-as | Danh sách các tên tệp ảnh chụp màn hình | hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )1 |
-s, -kích thước | Một danh sách các kích thước ảnh chụp màn hình | hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )2 |
-O, --Output_path | Thay đổi đường dẫn đầu ra của ảnh chụp màn hình (mặc định là thư mục làm việc hiện tại) | hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )3 |
-Q, --quiet | Tắt tất cả các đầu ra của CLI | hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )4 |
-V, --verbose | Thêm chi tiết, có thể giúp gỡ lỗi | hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )5 |
--chrom_path | Chỉ định một đường dẫn chrome khác | |
--TEMP_PATH | Chỉ định một đường dẫn nhiệt độ khác (nơi các tệp được tải) |
... Bây giờ trong một container docker!
Bạn cũng có thể kiểm tra gói và CLI mà không cần phải cài đặt mọi thứ trên máy cục bộ của bạn, thông qua container Docker.
- Đầu tiên
hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )
6 repo này hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )
7 bên trong nó- Xây dựng hình ảnh:
hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )
8 - Chạy và vào bên trong container:
hti.screenshot( html_file='blue_page.html', css_file='blue_background.css', save_as='blue_page.png' )
9
Bên trong thùng chứa đó, gói
html = """5 cũng nhưAn interesting title
This page will be red""" css = "body {background: red;}" hti.screenshot(html_str=html, css_str=css, save_as='red_page.png')
hti.screenshot(other_file='star.svg')1 được cài đặt.
Bạn có thể tải và thực thi tập lệnh Python để sử dụng gói hoặc chỉ sử dụng CLI.
Trên hết, bạn cũng có thể sử dụng các tập để liên kết một thư mục container với thư mục máy cục bộ của mình, cho phép bạn truy xuất các hình ảnh được tạo hoặc thậm chí tải một số tài nguyên (HTML, CSS hoặc Python tệp).
Kiểm tra
Chỉ có thử nghiệm cơ bản có sẵn tại thời điểm này. Để chạy thử nghiệm, hãy cài đặt các yêu cầu (gối) và chạy pytest tại gốc của dự án:
from html2image import Html2Image hti = Html2Image()8
Câu hỏi thường gặp
Tôi có thể tự động chụp ảnh màn hình toàn trang không? Đáng buồn là không, nó không dễ dàng có thể. HTML2Image dựa vào chế độ không đầu của trình duyệt Chrome/crom để chụp ảnh màn hình và không có cách nào để "hỏi" cho một ảnh chụp màn hình toàn trang vào lúc này. Nếu bạn biết một cách để lấy một (bằng cách ước tính kích thước trang chẳng hạn) tôi rất vui khi thấy nó, vì vậy hãy mở một vấn đề hoặc một cuộc thảo luận!
Sadly no, it is not easily possible. Html2Image relies on the headless mode of Chrome/Chromium browsers to take screenshots and there is no way to "ask" for a full page screenshot at the moment. If you know a way to take one (by estimating the page size for example) I would be happy to see it, so please open an issue or a discussion!Tôi có thể thêm độ trễ trước khi chụp ảnh màn hình không? Có bạn có thể, xin vui lòng xem phần
hti.screenshot(other_file='star.svg')
2 của ReadMe.
Yes you can, please take a look at thehti.screenshot(other_file='star.svg')
2 section of the readme.Tôi có thể tăng tốc quá trình chụp ảnh màn hình không? Có, khi bạn đang chụp nhiều ảnh chụp màn hình, bạn có thể đạt được "hiệu suất" tốt hơn bằng cách sử dụng các phương pháp xử lý hoặc đa xử lý song song. Bạn có thể tìm thấy một ví dụ về nó ở đây.
Yes, when you are taking a lot of screenshots, you can achieve better "performances" using Parallel Processing or Multiprocessing methods. You can find an example of it here.Tôi có thể làm cho một phương thức cookie biến mất không? Có và không. Không vì không có tùy chọn nào để thực hiện một cách kỳ diệu và các phần mở rộng không được hỗ trợ trong Chrome không đầu (phần mở rộng
hti.screenshot(other_file='star.svg')
3 sẽ hữu ích trong trường hợp này). Có bởi vì bạn có thể làm cho bất kỳ yếu tố nào của một trang biến mất bằng cách truy xuất mã nguồn của nó, sửa đổi nó như bạn muốn và cuối cùng đã trình bày về mã nguồn được sửa đổi.
Yes and no. No because there is no options to do it magically and extensions are not supported in headless Chrome (Thehti.screenshot(other_file='star.svg')
3 extension would have been useful in this case). Yes because you can make any element of a page disappear by retrieving its source code, modifying it as you wish, and finally screenshotting the modified source code.
Những việc cần làm
- Một CLI đẹp (hiện đang ở trạng thái WIP).
- Hỗ trợ của các trình duyệt khác (như Firefox khi tính năng ảnh chụp màn hình của họ sẽ hoạt động).
- Thế hệ pdf?
- Đóng góp, các mẫu phát hành, mẫu yêu cầu kéo, mã ứng xử.
Nếu bạn thấy bất kỳ lỗi chính tả hoặc thông báo nào được nói, hãy thoải mái tạo ra một vấn đề hoặc yêu cầu kéo.