Hướng dẫn how to automate website clicks python - cách tự động hóa lần nhấp vào trang web python
Trong hướng dẫn này, bạn sẽ học các kỹ thuật tự động hóa web Python nâng cao: Sử dụng selenium với trình duyệt không có đầu, xuất dữ liệu bị loại bỏ sang các tệp CSV và gói mã cạo của bạn trong lớp Python. Show
Động lực: Theo dõi thói quen ngheGiả sử rằng bạn đã nghe nhạc trên Bandcamp một thời gian và bạn thấy mình ước mình có thể nhớ một bài hát bạn đã nghe vài tháng trước. Chắc chắn, bạn có thể tìm hiểu về lịch sử trình duyệt của mình và kiểm tra từng bài hát, nhưng đó có thể là một nỗi đau mà tất cả những gì bạn nhớ là bạn đã nghe bài hát vài tháng trước và nó nằm trong thể loại điện tử. Bạn sẽ rất tuyệt, bạn nghĩ rằng, nếu tôi có một hồ sơ về lịch sử lắng nghe của mình? Tôi chỉ có thể tìm kiếm các bài hát điện tử từ hai tháng trước, và tôi chắc chắn tìm thấy nó. Hôm nay, bạn sẽ xây dựng một lớp Python cơ bản, được gọi là Lịch sử nghe sẽ được lưu vào đĩa trong tệp CSV. Sau đó, bạn có thể khám phá tệp CSV đó trong ứng dụng bảng tính yêu thích của bạn hoặc thậm chí với Python. Nếu bạn đã có một số kinh nghiệm với việc quét web trong Python, bạn đã quen thuộc với việc thực hiện các yêu cầu HTTP và sử dụng API Pythonic để điều hướng DOM. Bạn sẽ làm nhiều hơn như vậy ngày hôm nay, ngoại trừ với một sự khác biệt. Hôm nay bạn sẽ sử dụng trình duyệt đầy đủ chạy ở chế độ không đầu để thực hiện các yêu cầu HTTP cho bạn. Một trình duyệt không đầu chỉ là một trình duyệt web thông thường, ngoại trừ việc nó không chứa phần tử UI có thể nhìn thấy. Giống như bạn mong đợi, nó có thể thực hiện nhiều hơn các yêu cầu: nó cũng có thể hiển thị HTML (mặc dù bạn không thể thấy nó), giữ thông tin phiên và thậm chí thực hiện giao tiếp mạng không đồng bộ bằng cách chạy mã JavaScript. Nếu bạn muốn tự động hóa web hiện đại, các trình duyệt không đầu là rất cần thiết. Thành lậpBước đầu tiên của bạn, trước khi viết một dòng Python duy nhất, là cài đặt một webDriver được hỗ trợ selen cho trình duyệt web yêu thích của bạn. Trong phần tiếp theo, bạn sẽ làm việc với Firefox, nhưng Chrome cũng có thể dễ dàng làm việc. Giả sử rằng đường dẫn 7 nằm trong quá trình thực hiện của bạn 8, ở đây, cách bạn sẽ cài đặt Firefox WebDriver, được gọi là 9, trên máy Linux:
Tiếp theo, bạn cài đặt gói selenium, sử dụng 0 hoặc bất cứ thứ gì bạn thích. Nếu bạn tạo ra một môi trường ảo cho dự án này, bạn chỉ cần nhập:Bây giờ nó thời gian cho một ổ đĩa thử nghiệm. Kiểm tra lái một trình duyệt không đầuĐể kiểm tra mọi thứ đang hoạt động, bạn quyết định thử tìm kiếm trên web cơ bản qua Duckduckgo. Bạn kích hoạt trình thông dịch python ưa thích của mình và nhập các loại sau: >>>
Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến 1. Bạn đã thực hiện một thể hiện 2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo 3. Điều này giống như gõ 4 tại dòng lệnh.Bây giờ một trang được tải, bạn có thể truy vấn DOM bằng các phương thức được xác định trên đối tượng 5 mới được đúc của bạn. Nhưng làm thế nào để bạn biết những gì để truy vấn?Cách tốt nhất là mở trình duyệt web của bạn và sử dụng các công cụ phát triển của nó để kiểm tra nội dung của trang. Ngay bây giờ, bạn muốn nhận được mẫu tìm kiếm để bạn có thể gửi truy vấn. Bằng cách kiểm tra trang chủ Duckduckgo, bạn thấy rằng phần tử tìm kiếm 6 có thuộc tính 7 8. Đó chỉ là những gì bạn cần:>>>
Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến 1. Bạn đã thực hiện một thể hiện 2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo 3. Điều này giống như gõ 4 tại dòng lệnh.>>>
Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến 1. Bạn đã thực hiện một thể hiện 2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo 3. Điều này giống như gõ 4 tại dòng lệnh.>>>
Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 1. Bạn đã thực hiện một thể hiện >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 3. Điều này giống như gõ >>> search_form = browser.find_element_by_id('search_form_input_homepage') >>> search_form.send_keys('real python') >>> search_form.submit() 4 tại dòng lệnh.Bây giờ một trang được tải, bạn có thể truy vấn DOM bằng các phương thức được xác định trên đối tượng 5 mới được đúc của bạn. Nhưng làm thế nào để bạn biết những gì để truy vấn?
Groovin xông trên giai điệu >>>
Cho đến nay, bạn đã tạo ra một trình duyệt Firefox không đầu và điều hướng đến 1. Bạn đã thực hiện một thể hiện 2 và sử dụng nó để kích hoạt chế độ không đầu khi bạn chuyển nó cho hàm tạo 3. Điều này giống như gõ 4 tại dòng lệnh.>>>
Một ca khúc mới nên được chơi! Đây là bước đầu tiên để khám phá Bandcamp bằng Python! Bạn dành một vài phút để nhấp vào các bản nhạc khác nhau trong môi trường Python của bạn nhưng sớm trở nên mệt mỏi với Thư viện tám bài hát ít ỏi. Khám phá danh mụcNhìn lại trình duyệt của bạn, bạn thấy các nút để khám phá tất cả các bản nhạc đặc trưng trong phần khám phá âm nhạc của Bandcamp. Đến bây giờ, điều này cảm thấy quen thuộc: mỗi nút có giá trị 2 là 7. Nút cuối cùng là nút Next Next Next sẽ hiển thị tám bản nhạc tiếp theo trong danh mục. Bạn đi làm:>>>
Tuyệt quá! Bây giờ bạn muốn xem các bản nhạc mới, vì vậy bạn nghĩ rằng, tôi sẽ chỉ lặp lại biến 8 của tôi như tôi đã làm vài phút trước. Nhưng đây là nơi mọi thứ bắt đầu trở nên khó khăn.Đầu tiên, Bandcamp đã thiết kế trang web của họ để con người thích sử dụng, không phải các tập lệnh Python truy cập theo chương trình. Khi bạn gọi 9, trình duyệt web thực sự phản hồi bằng cách thực hiện một số mã JavaScript.Nếu bạn dùng thử trong trình duyệt của mình, bạn sẽ thấy rằng một số thời gian trôi qua khi danh mục các bài hát cuộn với hiệu ứng hoạt hình mượt mà. Nếu bạn cố gắng đăng lại biến 8 của mình trước khi hoạt hình kết thúc, bạn có thể không nhận được tất cả các bản nhạc và bạn có thể nhận được một số bản mà bạn không muốn.Những gì giải pháp? Bạn chỉ có thể ngủ trong một giây, hoặc, nếu bạn chỉ chạy tất cả những thứ này trong vỏ trăn, có lẽ bạn đã thắng được thậm chí chú ý. Rốt cuộc, bạn cũng cần có thời gian để gõ. Một kink nhỏ khác là một cái gì đó chỉ có thể được phát hiện thông qua thử nghiệm. Bạn cố gắng chạy lại cùng một mã: >>>
Nhưng bạn nhận thấy một cái gì đó lạ. 1 không bằng 2 mặc dù chỉ nên hiển thị lô tiếp theo của 2. Đào thêm một chút, bạn thấy rằng danh sách của bạn chứa một số bản nhạc đã được hiển thị trước đó. Để chỉ nhận được các bản nhạc thực sự có thể nhìn thấy trong trình duyệt, bạn cần lọc kết quả một chút.Sau khi thử một vài điều, bạn quyết định chỉ theo dõi nếu tọa độ 4 của nó trên trang nằm trong hộp giới hạn của phần tử chứa. Container danh mục có giá trị 2 là 6. Đây là cách bạn tiến hành:>>>
Xây dựng một lớp họcNếu bạn đang trở nên mệt mỏi khi getyping các lệnh tương tự nhiều lần trong môi trường Python của bạn, bạn nên đổ một số trong số đó vào một mô -đun. Một lớp cơ bản cho thao tác bandcamp của bạn nên làm như sau:
Ở đây, mã cơ bản, tất cả trong một lần: 0Khá gọn gàng. Bạn có thể nhập nó vào môi trường Python của bạn và chạy Bandcamp theo chương trình! Nhưng chờ đã, bạn đã bắt đầu toàn bộ điều này bởi vì bạn muốn theo dõi thông tin về lịch sử nghe của bạn? Thu thập dữ liệu có cấu trúcNhiệm vụ cuối cùng của bạn là theo dõi các bài hát mà bạn thực sự nghe. Làm thế nào bạn có thể làm điều này? Nó thực sự có nghĩa là gì khi nghe một cái gì đó? Nếu bạn đang xem xét danh mục, hãy dừng lại trong vài giây trên mỗi bài hát, liệu mỗi bài hát đó có được tính không? Chắc là không. Bạn sẽ cho phép một số thời gian khám phá, để tham gia vào việc thu thập dữ liệu của bạn. Mục tiêu của bạn bây giờ là:
Bạn quyết định sử dụng một cái tên được đặt tên để lưu trữ thông tin mà bạn theo dõi. Các bộ dữ liệu được đặt tên là tốt cho việc thể hiện các gói thuộc tính không có chức năng gắn liền với chúng, hơi giống với bản ghi cơ sở dữ liệu: 1Để thu thập thông tin này, bạn thêm một phương thức vào lớp 6. Kiểm tra lại với các công cụ phát triển trình duyệt, bạn tìm thấy các phần tử và thuộc tính HTML phù hợp để chọn tất cả thông tin bạn cần. Ngoài ra, bạn chỉ muốn có được thông tin về bản nhạc hiện đang phát nếu có nhạc thực sự phát vào thời điểm đó. May mắn thay, trình phát trang thêm một lớp 8 vào nút phát bất cứ khi nào âm nhạc phát và xóa nó khi âm nhạc dừng lại.Với những cân nhắc này, bạn viết một vài phương pháp: 2Để có biện pháp tốt, bạn cũng sửa đổi phương thức 9 để theo dõi bản nhạc hiện đang phát: 3Tiếp theo, bạn đã phải giữ một cơ sở dữ liệu nào đó. Mặc dù nó có thể không mở rộng tốt trong thời gian dài, bạn có thể đi xa với một danh sách đơn giản. Bạn thêm 0 vào phương thức ________ 51 2. Vì bạn muốn cho phép thời gian vượt qua trước khi nhập đối tượng 3 vào cơ sở dữ liệu, bạn quyết định sử dụng các công cụ luồng Python, để chạy một quy trình riêng để duy trì cơ sở dữ liệu trong nền.Bạn sẽ cung cấp một phương thức 4 cho các trường hợp 6 sẽ chạy trong một luồng riêng. Phương pháp mới sẽ định kỳ kiểm tra giá trị của 6 và thêm nó vào cơ sở dữ liệu nếu nó mới.Bạn sẽ bắt đầu luồng khi lớp được khởi tạo bằng cách thêm một số mã vào 2: 4Nếu bạn không bao giờ làm việc với lập trình đa luồng trong Python, bạn nên đọc về nó! Với mục đích hiện tại của bạn, bạn có thể nghĩ về chủ đề như một vòng lặp chạy trong nền của quy trình Python chính (cái bạn tương tác trực tiếp). Cứ sau hai mươi giây, vòng lặp kiểm tra một vài điều để xem liệu cơ sở dữ liệu có cần được cập nhật hay không, và nếu có, cộng đồng một bản ghi mới. Tuyệt đấy. Bước cuối cùng là lưu cơ sở dữ liệu và khôi phục từ các trạng thái đã lưu. Sử dụng gói CSV, bạn có thể đảm bảo cơ sở dữ liệu của mình nằm ở định dạng di động cao và vẫn có thể sử dụng được ngay cả khi bạn từ bỏ lớp 6 tuyệt vời của mình!Phương thức 2 sẽ được thay đổi một lần nữa, lần này để chấp nhận một đường dẫn tệp nơi bạn muốn lưu cơ sở dữ liệu. Bạn muốn tải cơ sở dữ liệu này nếu nó có sẵn và bạn muốn lưu nó định kỳ, bất cứ khi nào nó được cập nhật. Các bản cập nhật trông như thế này: 5Voilà! Bạn có thể nghe nhạc và ghi lại những gì bạn nghe thấy! Kinh ngạc. Một điều thú vị về điều trên là việc sử dụng 0 thực sự bắt đầu được đền đáp. Khi chuyển đổi đến và từ định dạng CSV, bạn tận dụng thứ tự của các hàng trong tệp CSV để điền vào các hàng trong các đối tượng 3. Tương tự như vậy, bạn có thể tạo hàng tiêu đề của tệp CSV bằng cách tham chiếu thuộc tính 2. Đây là một trong những lý do sử dụng một tuple kết thúc có ý nghĩa đối với dữ liệu cột.Những gì tiếp theo và bạn đã học được gì?Bạn có thể tải nhiều hơn nữa! Dưới đây là một vài ý tưởng nhanh chóng sẽ tận dụng siêu năng lực nhẹ là Python + selenium:
Bạn đã học được rằng Python có thể làm mọi thứ mà trình duyệt web có thể làm và nhiều hơn một chút. Bạn có thể dễ dàng viết các tập lệnh để kiểm soát các phiên bản trình duyệt ảo chạy trong đám mây. Bạn có thể tạo các bot tương tác với người dùng thực hoặc điền vào các biểu mẫu! Đi ra ngoài và tự động hóa! Làm thế nào để bạn tự động nhấp vào một nút trong Python?Chúng tôi có thể nhấp vào một nút với selenium webdriver trong Python bằng phương thức Click. Đầu tiên, chúng tôi phải xác định nút để được nhấp với sự trợ giúp của bất kỳ trình định vị nào như ID, Tên, Lớp, XPath, TagName hoặc CSS. Sau đó, chúng tôi phải áp dụng phương thức nhấp vào nó. Một nút trong mã HTML được biểu thị bằng tên nút.using the click method. First, we have to identify the button to be clicked with the help of any locators like id, name, class, xpath, tagname or css. Then we have to apply the click method on it. A button in html code is represented by button tagname.
Chúng ta có thể làm tự động hóa web bằng Python không?Bạn đã học được rằng Python có thể làm mọi thứ mà trình duyệt web có thể làm và nhiều hơn một chút. Bạn có thể dễ dàng viết các tập lệnh để kiểm soát các phiên bản trình duyệt ảo chạy trong đám mây. Bạn có thể tạo các bot tương tác với người dùng thực hoặc điền vào các biểu mẫu! Đi ra ngoài và tự động hóa!Python can do everything that a web browser can do, and a bit more. You could easily write scripts to control virtual browser instances that run in the cloud. You could create bots that interact with real users or mindlessly fill out forms! Go forth and automate!
Làm thế nào để bạn tự động hóa một trang web bằng Selenium Python?Vì vậy, hãy xem nó hoạt động như thế nào:.. Mở trình duyệt .. Tạo một thể hiện trình duyệt và sử dụng.Nhận chức năng để kết nối trang web .. Tìm phần tử Đây có thể là bất cứ điều gì tìm hộp đầu vào hoặc nút và sử dụng hàm selenium như click (), send_keys (), v.v. để tương tác với phần tử .. Đóng trình duyệt .. Làm thế nào tôi có thể tự động hóa điền vào một biểu mẫu web?Sử dụng máy ghi Katalon để điền vào mẫu tự động.. Bước 1: Lắp đặt máy ghi Katalon trên trình duyệt ưa thích của bạn (Chrome/Firefox/Edge) .... Bước 2: Ghi lại luồng mong muốn..... Bước 3: Chuẩn bị dữ liệu để tự động hóa biểu mẫu..... Bước 4: Nhập tệp CSV và chạy .. |