Python có thể tương tác với HTML không?
Vấn đề. Nộp bài tập cho lớp đòi hỏi phải điều hướng trong một mê cung các trang web phức tạp đến mức nhiều lần tôi đã nộp bài tập sai vị trí. Ngoài ra, mặc dù quá trình này chỉ mất 1–2 phút, nhưng đôi khi nó giống như một rào cản không thể vượt qua (chẳng hạn như khi tôi hoàn thành bài tập quá muộn vào ban đêm và tôi hầu như không nhớ được mật khẩu của mình) Show Dung dịch. Sử dụng Python để tự động gửi bài tập đã hoàn thành. Lý tưởng nhất là tôi có thể lưu bài tập, nhập một vài phím và tải bài làm của mình lên chỉ trong vài giây. Lúc đầu, điều này nghe có vẻ quá tốt để trở thành sự thật, nhưng sau đó tôi phát hiện ra Selenium, một công cụ có thể được sử dụng với Python để điều hướng trang web cho bạn XKCD bắt buộcBất cứ khi nào chúng tôi thấy mình lặp lại các thao tác tẻ nhạt trên web với cùng một trình tự các bước, đây là cơ hội tuyệt vời để viết chương trình tự động hóa quy trình cho chúng tôi. Với Selenium và Python, chúng ta chỉ cần viết một tập lệnh một lần, sau đó chúng ta có thể chạy tập lệnh đó nhiều lần và tránh lặp lại các tác vụ đơn điệu (và trong trường hợp của tôi, loại bỏ khả năng gửi bài tập không đúng chỗ) Sau đây, tôi sẽ hướng dẫn giải pháp mà tôi đã phát triển để gửi bài tập của mình một cách tự động (và chính xác). Đồng thời, chúng ta sẽ đề cập đến những kiến thức cơ bản về cách sử dụng Python và selen để điều khiển web theo chương trình. Trong khi chương trình này hoạt động (tôi đang sử dụng nó hàng ngày. ) nó khá tùy chỉnh nên bạn sẽ không thể sao chép và dán mã cho ứng dụng của mình. Tuy nhiên, các kỹ thuật chung ở đây có thể được áp dụng cho vô số tình huống. (Nếu bạn muốn xem mã hoàn chỉnh, nó có sẵn trên GitHub) Cách tiếp cậnTrước khi chúng ta có thể đi đến phần thú vị của việc tự động hóa web, chúng ta cần tìm ra cấu trúc chung của giải pháp của chúng ta. Nhảy ngay vào lập trình mà không có kế hoạch là một cách tuyệt vời để lãng phí nhiều giờ trong sự thất vọng. Tôi muốn viết một chương trình để gửi các bài tập khóa học đã hoàn thành đến đúng vị trí trên Canvas ("hệ thống quản lý học tập" của trường đại học của tôi). Bắt đầu với những điều cơ bản, tôi cần một cách để cho chương trình biết tên của bài tập cần nộp và lớp. Tôi đã thực hiện một cách tiếp cận đơn giản và tạo một thư mục để chứa các bài tập đã hoàn thành với các thư mục con cho mỗi lớp. Trong các thư mục con, tôi đặt tài liệu đã hoàn thành có tên cho bài tập cụ thể. Chương trình có thể tìm ra tên của lớp từ thư mục và tên của bài tập theo tiêu đề tài liệu Đây là một ví dụ trong đó tên của lớp là EECS491 và bài tập là “Bài tập 3 - Suy luận trong các mô hình đồ họa lớn hơn” Cấu trúc tệp (trái) và Bài tập hoàn chỉnh (phải)Phần đầu tiên của chương trình là một vòng lặp để đi qua các thư mục để tìm bài tập và lớp mà chúng tôi lưu trữ trong một bộ Python # os for file management Điều này đảm nhiệm việc quản lý tệp và chương trình hiện biết chương trình và nhiệm vụ cần nộp. Bước tiếp theo là sử dụng selen để điều hướng đến đúng trang web và tải bài tập lên Kiểm soát web với SeleniumĐể bắt đầu với selen, chúng tôi nhập thư viện và tạo trình điều khiển web, đây là trình duyệt được kiểm soát bởi chương trình của chúng tôi. Trong trường hợp này, tôi sẽ sử dụng Chrome làm trình duyệt của mình và gửi trình điều khiển đến trang web Canvas nơi tôi nộp bài tập import selenium# Using Chrome to access web Khi mở trang web Canvas, chúng tôi được chào đón với chướng ngại vật đầu tiên, hộp đăng nhập. Để vượt qua điều này, chúng tôi sẽ cần điền id và mật khẩu và nhấp vào nút đăng nhập Hãy tưởng tượng trình điều khiển web là một người chưa bao giờ nhìn thấy một trang web trước đây. chúng ta cần cho nó biết chính xác nơi để bấm, gõ gì và bấm nút nào. Có một số cách để cho trình điều khiển web của chúng tôi biết những phần tử cần tìm, tất cả đều sử dụng bộ chọn. Bộ chọn là mã định danh duy nhất cho một phần tử trên trang web. Để tìm bộ chọn cho một phần tử cụ thể, giả sử hộp ID CWRU ở trên, chúng tôi cần kiểm tra trang web. Trong Chrome, điều này được thực hiện bằng cách nhấn “ctrl + shift + i” hoặc nhấp chuột phải vào bất kỳ phần tử nào và chọn “Kiểm tra”. Thao tác này sẽ hiển thị các công cụ dành cho nhà phát triển Chrome, một ứng dụng cực kỳ hữu ích hiển thị HTML bên dưới bất kỳ trang web nào Để tìm bộ chọn cho hộp “ID CWRU”, tôi đã nhấp chuột phải vào hộp, nhấn “Kiểm tra” và thấy thông tin sau trong công cụ dành cho nhà phát triển. Dòng được đánh dấu tương ứng với phần tử hộp id (dòng này được gọi là thẻ HTML) HTML trong công cụ dành cho nhà phát triển Chrome dành cho trang webHTML này có thể trông choáng ngợp, nhưng chúng ta có thể bỏ qua phần lớn thông tin và tập trung vào phần import selenium# Using Chrome to access web9 và import selenium# Using Chrome to access web0. (chúng được gọi là thuộc tính của thẻ HTML) Để chọn hộp id với trình điều khiển web của chúng tôi, chúng tôi có thể sử dụng thuộc tính import selenium# Using Chrome to access web1 hoặc import selenium# Using Chrome to access web2 mà chúng tôi tìm thấy trong các công cụ dành cho nhà phát triển. Trình điều khiển web trong Selenium có nhiều phương pháp khác nhau để chọn các thành phần trên trang web và thường có nhiều cách để chọn chính xác cùng một mục # Select the id box Chương trình của chúng tôi hiện có quyền truy cập vào import selenium# Using Chrome to access web3 và chúng tôi có thể tương tác với nó theo nhiều cách khác nhau, chẳng hạn như nhập phím hoặc nhấp (nếu chúng tôi đã chọn một nút) # Send id information Chúng tôi thực hiện quy trình tương tự cho hộp mật khẩu và nút đăng nhập, chọn từng tùy chọn dựa trên những gì chúng tôi thấy trong công cụ dành cho nhà phát triển Chrome. Sau đó, chúng tôi gửi thông tin đến các phần tử hoặc nhấp vào chúng khi cần ________số 8Khi chúng tôi đăng nhập, chúng tôi được chào đón bởi bảng điều khiển hơi đáng sợ này Một lần nữa, chúng tôi cần hướng dẫn chương trình thông qua trang web bằng cách chỉ định chính xác các yếu tố để nhấp vào và thông tin để nhập. Trong trường hợp này, tôi yêu cầu chương trình chọn các khóa học từ menu bên trái, sau đó chọn lớp tương ứng với bài tập tôi cần nộp # Find and click on list of courses Chương trình tìm đúng lớp sử dụng tên thư mục mà chúng ta đã lưu trữ ở bước đầu tiên. Trong trường hợp này, tôi sử dụng phương pháp lựa chọn import selenium# Using Chrome to access web4 để tìm lớp cụ thể. “Văn bản liên kết” cho một phần tử chỉ là một bộ chọn khác mà chúng ta có thể tìm thấy bằng cách kiểm tra trang. Kiểm tra trang để tìm bộ chọn cho một lớp cụ thể Quy trình công việc này có vẻ hơi tẻ nhạt, nhưng hãy nhớ rằng, chúng ta chỉ phải thực hiện một lần khi viết chương trình của mình. Sau đó, chúng ta có thể nhấn chạy bao nhiêu lần tùy thích và chương trình sẽ điều hướng qua tất cả các trang này cho chúng ta Chúng tôi sử dụng cùng một quy trình 'kiểm tra trang - chọn phần tử - tương tác với phần tử' để vượt qua một vài màn hình khác. Cuối cùng, chúng tôi đến trang nộp bài tập Tại thời điểm này, tôi có thể nhìn thấy vạch đích, nhưng ban đầu màn hình này làm tôi bối rối. Tôi có thể nhấp vào hộp “Chọn tệp” khá dễ dàng, nhưng làm cách nào để chọn tệp thực tế mà tôi cần tải lên? . Chúng tôi định vị hộp import selenium# Using Chrome to access web5 bằng bộ chọn và sử dụng phương pháp import selenium# Using Chrome to access web6 để chuyển đường dẫn chính xác của tệp (được gọi là import selenium# Using Chrome to access web7 trong mã bên dưới) vào hộp import selenium# Using Chrome to access web4 Đó là nó. Bằng cách gửi đường dẫn chính xác của tệp tới nút, chúng tôi có thể bỏ qua toàn bộ quá trình điều hướng qua các thư mục để tìm đúng tệp. Sau khi gửi vị trí, chúng tôi được thưởng bằng màn hình sau cho biết tệp của chúng tôi đã được tải lên và sẵn sàng để gửi Bây giờ, chúng tôi chọn nút “Gửi bài tập”, nhấp vào và bài tập của chúng tôi được nộp import selenium# Using Chrome to access web5 Dọn dẹpQuản lý tệp luôn là một bước quan trọng và tôi muốn đảm bảo rằng mình không nộp lại hoặc làm mất bài tập cũ. Tôi quyết định giải pháp tốt nhất là lưu trữ một tệp duy nhất để gửi vào thư mục import selenium# Using Chrome to access web8 bất kỳ lúc nào và di chuyển các tệp vào thư mục ____19 sau khi chúng được nộp vào. Đoạn mã cuối cùng sử dụng mô-đun os để di chuyển nhiệm vụ đã hoàn thành bằng cách đổi tên nó theo vị trí mong muốn import selenium# Using Chrome to access web8 Tất cả mã tiến hành được gói gọn trong một tập lệnh duy nhất mà tôi có thể chạy từ dòng lệnh. Để hạn chế khả năng mắc lỗi, tôi chỉ gửi một bài tập mỗi lần, đây không phải là vấn đề lớn vì chỉ mất khoảng 5 giây để chạy chương trình Đây là giao diện khi tôi bắt đầu chương trình Chương trình cung cấp cho tôi cơ hội để đảm bảo đây là bài tập chính xác trước khi tải lên. Sau khi chương trình hoàn thành, tôi nhận được đầu ra sau Trong khi chương trình đang chạy, tôi có thể xem Python làm việc cho tôi kết luậnKỹ thuật tự động hóa web bằng Python hoạt động hiệu quả cho nhiều tác vụ, cả nói chung và trong lĩnh vực khoa học dữ liệu của tôi. Ví dụ: chúng tôi có thể sử dụng selen để tự động tải xuống các tệp dữ liệu mới mỗi ngày (giả sử trang web không có API). Mặc dù viết kịch bản ban đầu có vẻ tốn nhiều công sức, nhưng lợi ích đến từ thực tế là chúng ta có thể yêu cầu máy tính lặp lại trình tự này bao nhiêu lần tùy ý theo cùng một cách thức. Chương trình sẽ không bao giờ mất tập trung và chuyển sang Twitter. Nó sẽ thực hiện chính xác cùng một loạt các bước với tính nhất quán hoàn hảo (hoạt động tốt cho đến khi trang web thay đổi) Tôi nên đề cập rằng bạn muốn cẩn thận trước khi tự động hóa các tác vụ quan trọng. Ví dụ này có rủi ro tương đối thấp vì tôi luôn có thể quay lại và gửi lại bài tập và tôi thường kiểm tra lại công việc thủ công của chương trình. Các trang web thay đổi và nếu bạn không thay đổi chương trình để đáp ứng, bạn có thể kết thúc bằng một tập lệnh thực hiện điều gì đó hoàn toàn khác với những gì bạn dự định ban đầu Về mặt thanh toán, chương trình này giúp tôi tiết kiệm khoảng 30 giây cho mỗi bài tập và mất 2 giờ để viết. Vì vậy, nếu tôi sử dụng nó để nộp 240 bài tập, thì tôi sẽ về trước đúng giờ. Tuy nhiên, phần thưởng của chương trình này là thiết kế một giải pháp tuyệt vời cho một vấn đề và học hỏi được nhiều điều trong quá trình này. Mặc dù thời gian của tôi có thể được sử dụng hiệu quả hơn để giải quyết các bài tập hơn là tìm cách tự động nộp chúng, nhưng tôi hoàn toàn thích thú với thử thách này. Có một vài điều thỏa mãn như giải quyết vấn đề và Python hóa ra là một công cụ khá tốt để thực hiện chính xác điều đó Như mọi khi, tôi hoan nghênh phản hồi và phê bình mang tính xây dựng. Có thể liên hệ với tôi trên Twitter @koehrsen_will Python có thể hoạt động với HTML không?Nếu bạn quan tâm đến việc phát triển web bằng Python thì việc biết HTML và CSS sẽ giúp bạn hiểu rõ hơn về các khung web như Django và Flask. Nhưng ngay cả khi bạn mới bắt đầu với Python, HTML và CSS có thể cho phép bạn tạo các trang web nhỏ để gây ấn tượng với bạn bè .
Làm cách nào để tích hợp mã Python với HTML?Chỉ cần sử dụng bất kỳ HTTP Python nào và phản hồi bằng HTML của bạn và xem nó trong trình duyệt của bạn. Hãy làm rõ tình hình. Tôi đang tạo trò chơi trên Ren'py(link) và để đơn giản hóa công việc (tôi cần làm thứ gì đó giống như điện thoại), tôi muốn sử dụng HTML (CSS và JS). Vì vậy, tôi đã hỏi liệu bằng cách nào đó tôi có thể làm những gì tôi muốn |