2013-07-31 22 views
11

Tôi mới sử dụng lập trình web và gần đây đã bắt đầu xem xét sử dụng Python để tự động hóa một số quy trình thủ công. Những gì tôi đang cố gắng làm là đăng nhập vào một trang web, nhấp vào một số menu thả xuống để chọn cài đặt và chạy báo cáo.Sử dụng thư viện Yêu cầu của Python để điều hướng các trang web/Các nút bấm

Tôi đã tìm thấy thư viện yêu cầu được hoan nghênh: http://docs.python-requests.org/en/latest/user/advanced/#request-and-response-objects và đã cố gắng tìm cách sử dụng nó.

Tôi đã đăng nhập thành công trong việc sử dụng câu trả lời bpbp của trên trang này: How to use Python to login to a webpage and retrieve cookies for later usage?

sự hiểu biết của tôi về "click" một nút là viết một lệnh bài() bắt chước một nhấp chuột: Python - clicking a javascript button

Câu hỏi của tôi (kể từ khi tôi mới đến lập trình web và thư viện này) là làm thế nào tôi sẽ đi về kéo dữ liệu tôi cần phải tìm ra cách tôi sẽ xây dựng các lệnh này. Tôi đã xem xét [RequestObject] .headers, .text, v.v. Bất kỳ ví dụ nào cũng tuyệt vời.

Như mọi khi, cảm ơn sự giúp đỡ của bạn!

EDIT ::: Để làm cho câu hỏi này cụ thể hơn, tôi gặp sự cố khi tương tác với các khía cạnh khác nhau của trang web. Những hình ảnh sau đây cho thấy những gì tôi đang thực sự cố gắng để làm:

Example

Tôi đang trên một trang web trông như thế này. Có một menu thả xuống có ngày có thể nhấp có thể thay đổi. Mục tiêu của tôi là tự động thay đổi ngày thành ngày gần đây nhất, "nhấp" "Lưu và Chạy" và tải xuống báo cáo khi nó kết thúc chạy.

+0

Tôi chưa có nhiều hướng để thử mọi thứ. Tôi đã chỉnh sửa bài đăng với ý tưởng cụ thể hơn về những gì tôi đang cố gắng thực hiện, vì vậy tôi không nghĩ đó chỉ là một trình phân tích cú pháp tốt để trích xuất HTML, nhưng cách "đăng" thông tin khác nhau lên trang web để hoàn thành nhiệm vụ, đặc biệt là các thao tác 'nhấp' – so13eit

+0

xem [selenium] (https://pypi.python.org/pypi/selenium) nếu có javascript trong các trang bạn đang cố thu thập dữ liệu. – djas

+0

Một luồng công việc có thể cho một quá trình như thế này là tải trang đang được đề cập đến (sử dụng requests.get()), tìm ra bất kỳ phần tử biểu mẫu động nào bạn cần lấy từ trang và sau đó sử dụng requests.post() để gửi thông tin bạn cần. Sử dụng công cụ dev của trình duyệt có thể cực kỳ có giá trị để xem chính xác những gì đang được gửi trong yêu cầu POST. – brechin

Trả lời

7

Giải pháp duy nhất cho điều này tôi đã tìm thấy là Selenium. Nếu nó không phải là một trang web nặng javascript bạn có thể thử mechanize nhưng đối với điều này bạn cần phải render javascript và sau đó tiêm javascript ... như Selenium.

Phía trên: Bạn có thể ghi lại các hành động trong Firefox (sử dụng selenium), sau đó xuất các hành động đó sang python. Nhược điểm là mã này phải mở một cửa sổ trình duyệt để chạy.