Giới thiệu Nodriver: Thư viện tự động hóa nhanh chóng và hiệu quả


Hôm nay mình xin giới thiệu với các bạn thư viện Nodriver phát triển bởi ultrafunkamsterdam (https://github.com/ultrafunkamsterdam/nodriver/tree/main):


Một số tính năng



  • Một thư viện tự động hóa Chrome (-ish) cực nhanh không bị phát hiện.

  • Không có tệp nhị phân chromedriver hoặc phụ thuộc vào Selenium.

  • Điều này đồng nghĩa với việc tăng hiệu suất một cách kỳ lạ và ít bị phát hiện hơn!

  • Chạy và hoạt động trong 1 dòng mã.

  • Sử dụng hồ sơ mới trên mỗi lần chạy, dọn dẹp khi thoát.

  • Lưu và tải cookie vào tệp để không phải lặp lại các bước đăng nhập tẻ nhạt.

  • Tra cứu phần tử thông minh, theo bộ chọn hoặc văn bản, bao gồm nội dung iframe.

  • Có thể chuyển đổi một phiên bản undetected_chromedriver.Chrome đang chạy thành một phiên bản nodriver.Browser và tiếp tục từ đó.

  • Được đóng gói với các phương pháp trợ giúp và tiện ích cho hầu hết các hoạt động quan trọng.


Cài đặt


Vì Nodriver là một phần của undetected-chromedriver, quá trình cài đặt sẽ diễn ra qua:


pip install undetected-chromedriver

Trong trường hợp bạn không muốn sử dụng undetected-chromedriver, gói này có thể được cài đặt bằng cách sử dụng:


pip install nodriver

Ví dụ sử dụng


Mục đích của dự án này (giống như undetected-chromedriver, đã có từ lâu) là giữ cho nó ngắn gọn và đơn giản. Bạn có thể nhanh chóng mở trình soạn thảo hoặc phiên tương tác, nhập hoặc dán một vài dòng và bắt đầu.



import asyncio
import nodriver as uc

async def main():
browser = await uc.start()
page = await browser.get('https://www.nowsecure.nl')

await page.save_screenshot()
await page.get_content()
await page.scroll_down(150)
elems = await page.select_all('*[src]')
for elem in elems:
await elem.flash()

page2 = await browser.get('https://twitter.com', new_tab=True)
page3 = await browser.get('https://github.com/ultrafunkamsterdam/nodriver', new_window=True)

for p in (page, page2, page3):
await p.bring_to_front()
await p.scroll_down(200)
await p # wait for events to be processed
await p.reload()
if p != page3:
await p.close()

if __name__ == '__main__':
uc.loop().run_until_complete(main())

Trên đây là một ví dụ đơn giản về cách sử dụng Nodriver để thao tác trên nhiều trang web một cách tự động. Thư viện này giúp giảm thiểu rủi ro bị phát hiện khi tự động hóa trình duyệt và đồng thời tăng hiệu suất thực thi.


Bạn có thể bấm vào đây để xem tài liệu chi tiết về thư viện này
https://ultrafunkamsterdam.github.io/nodriver/
Cùng Chuyên Mục
Xem thêm
Comment Facebook